3v4l.org

run code in 300+ PHP versions simultaneously
<?php class RecursionImplementation { public static function recursionInitiator($array, $keylist) { self::$keys = explode(",", $keylist); if(count(self::$keys) == 0) return $array; $array = self::recursion($array); return $array; } private static function recursion($array) { $all_keys = array_keys($array); $intersection = array_intersect($all_keys, self::$keys); $difference = array_diff($all_keys, self::$keys); $number_of_intersecting_keys = count($intersection); $number_of_non_intersecting_keys = count($array) - $number_of_intersecting_keys; if($number_of_intersecting_keys + $number_of_non_intersecting_keys == 0) return; if($number_of_intersecting_keys >= 1) { foreach($intersection as $key) { unset($array[$key]); $array[$key] = self::$asterisk; } } if($number_of_non_intersecting_keys >= 1) { foreach($difference as $key) { if(is_array($array[$key])) { $value = self::recursion($array[$key]); unset($array[$key]); $array[$key] = $value; } } } return $array; } private static $keys; private static $asterisk = "**"; } $information = array("login" => "someUsername", "password" => "somePassword", "card_pin"=>"card_1234", "pin"=>"pin_356", "iin" => "iin_123", "shipping" => array("value" => array("telephone" => array("inner_value" => "telephone_998"))), "cardnumber" => "card_number_876", "customer_id" => "customer_654", "telephone" => "someOtherTelephoneNumber555"); $list = "telephone,login"; print_r($information); echo "\n\n"; $final_array = RecursionImplementation::recursionInitiator($information, $list); print_r($final_array);
Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
Array ( [login] => someUsername [password] => somePassword [card_pin] => card_1234 [pin] => pin_356 [iin] => iin_123 [shipping] => Array ( [value] => Array ( [telephone] => Array ( [inner_value] => telephone_998 ) ) ) [cardnumber] => card_number_876 [customer_id] => customer_654 [telephone] => someOtherTelephoneNumber555 ) Array ( [password] => somePassword [card_pin] => card_1234 [pin] => pin_356 [iin] => iin_123 [cardnumber] => card_number_876 [customer_id] => customer_654 [login] => ** [telephone] => ** [shipping] => Array ( [value] => Array ( [telephone] => ** ) ) )

preferences:
200.15 ms | 406 KiB | 200 Q