也许有人可以帮我解决这个问题:
我正在使用基本搜索函数来查找数组深处的数组。问题是,一旦找到该数组,我还想返回它的父键。 有没有可以确定数组父键的 PHP 函数?
下面是搜索函数的示例...理想情况下,我想返回找到的数组及其父键。
function search($array, $key, $value){
$results = array();
if (is_array($array)){
if ($array[$key] == $value){
$results[] = $array;
}
foreach ($array as $subarray){
$results = array_merge($results, search($subarray, $key, $value));
}
}
return $results;
}
这里有一个例子可以更好地说明我的意思: 这是我要搜索的数组的示例:
Array
(
[categories] => Array
(
[1] => Array
(
[data] =>
[id] => d
[name] => Bracelets
[products] => Array
(
[0] => Array
(
[id] => j
[name] => Red
[data] =>
)
[1] => Array
(
[id] => gi
[name] => Torqoise
[data] =>
)
)
)
如果我搜索“id”为“j”的内容,我会得到这个数组作为结果:
Array
(
[0] => Array
(
[id] => j
[name] => Red
[data] =>
)
)
现在,理想情况下我还想知道这个数组的父键,在示例中是“Products”,显然我需要在返回结果之前检索它......
不,没有内置功能。您可以在函数参数中传递父键
您可以使用 array_flip() 交换键和值,以便可以检索键和值。
您还可以将 foreach 稍微修改为类似
foreach ($array as $subarray_key => $subarray){
$results = array_merge($results, search($subarray, $key, $value));
}
并且 $subarray_key 将是键。