<?php
class RecursionImplementation
{
public static function recursionInitiator($array, $keylist)
{
self::$keys = explode(",", $keylist);
if(is_null(self::keys) || 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);
preferences:
46.09 ms | 402 KiB | 5 Q