我试图找到一种方法来返回数组的父键的值。
例如,从下面的数组中,我想找出$ array [‘id’] ==“ 0002”的父键。父键很明显,因为它是在这里定义的(它是“产品”),但是通常它是动态的,因此是问题所在。但是,“ id”和“ id”的值是已知的。
[0] => Array ( [data] => [id] => 0000 [name] => Swirl [categories] => Array ( [0] => Array ( [id] => 0001 [name] => Whirl [products] => Array ( [0] => Array ( [id] => 0002 [filename] => 1.jpg ) [1] => Array ( [id] => 0003 [filename] => 2.jpg ) ) ) ) )
进行一些粗略的递归,但应该可以:
function find_parent($array, $needle, $parent = null) { foreach ($array as $key => $value) { if (is_array($value)) { $pass = $parent; if (is_string($key)) { $pass = $key; } $found = find_parent($value, $needle, $pass); if ($found !== false) { return $found; } } else if ($key === 'id' && $value === $needle) { return $parent; } } return false; } $parentkey = find_parent($array, '0002');