Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function array_with_keys_recursive($array, $keyToRemain){
- $new_arr = [];
- //normal
- $keysToRemain= is_array($keyToRemain)?$keyToRemain:[$keyToRemain];
- foreach( $array as $key_1=>$val_1 )
- {
- if (in_array($key_1,$keysToRemain))
- $new_arr[$key_1]=$val_1;
- }
- //regex (i.e. *->key1->key2)
- $keysToRemain_REGEX = $this->array_only_values_that_contain($keysToRemain,'->');
- foreach($keysToRemain_REGEX as $eachRegex)
- {
- $keysArr= $this->string_to_array($eachRegex, '->');
- foreach( $array as $key_1=>$val_1 )
- {
- if($keysArr[0]==="*" || $keysArr[0]===$key_1){
- if (!is_array($val_1))
- {
- if (empty($keysArr[1]))
- $new_arr[$key_1]=$val_1;
- }
- else{
- foreach ($val_1 as $key_2=>$val_2)
- {
- if($keysArr[1]==="*" || $keysArr[1]===$key_2){
- if (!is_array($val_2))
- {
- if (empty($keysArr[2]))
- $new_arr[$key_1][$key_2]=$val_2;
- }
- else{
- foreach ($val_2 as $key_3=>$val_3)
- {
- if ( $keysArr[2]==="*" || $keysArr[2]===$key_3 )
- {
- if (!is_array($val_3))
- {
- if (empty($keysArr[3]))
- $new_arr[$key_1][$key_2][$key_3]=$val_3;
- }
- else{
- foreach ($val_3 as $key_4=>$val_4)
- {
- if ( $keysArr[3]==="*" || $keysArr[3]===$key_4 )
- {
- $new_arr[$key_1][$key_2][$key_3][$key_4]=$val_4;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return $new_arr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement