Exemple #1
0
 /**
  * calculates intersection of two arrays like array_intersect_key but recursive
  *
  * @param  array/mixed  master array
  * @param  array        array that has the keys which should be kept in the master array
  * @return array/mixed  cleand master array
  */
 public static function array_intersect_r($master, $mask)
 {
     if (!is_array($master)) {
         return $master;
     }
     foreach ($master as $k => $v) {
         if (!isset($mask[$k])) {
             unset($master[$k]);
             continue;
         }
         // remove value from $master if the key is not present in $mask
         if (is_array($mask[$k])) {
             $master[$k] = ZuhaSet::array_intersect_r($master[$k], $mask[$k]);
         }
         // recurse when mask is an array
         // else simply keep value
         if (!is_array($v)) {
             global $finalParsedVar;
             $finalParsedVar = $v;
         }
     }
     global $finalParsedVar;
     #return $master; // returns the full associative array with the value filled in
     return $finalParsedVar;
 }