/** * 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; }