Php 查找密钥=>;多维数组中的值,但返回父键?

Php 查找密钥=>;多维数组中的值,但返回父键?,php,spl,Php,Spl,我试图循环遍历一个数组,并返回一个具有set key=>值的数组的键和子数组 例如 假设我有 array(0 => array("chicken" => "free"), 1 => array("chicken" => "notfree")); 我想得到数组array(“chicken”=>“notfree”)并知道父键是1 我有以下几点 function search($array, $key, $value) { $arrIt = new Recursive

我试图循环遍历一个数组,并返回一个具有set key=>值的数组的键和子数组

例如

假设我有

array(0 => array("chicken" => "free"), 1 => array("chicken" => "notfree"));
我想得到数组
array(“chicken”=>“notfree”)
并知道父键是
1

我有以下几点

function search($array, $key, $value) {
    $arrIt = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));

    foreach($arrIt as $sub) {
        $subArray = $arrIt->getSubIterator();
        $subKey = $arrIt->key();
        if(isset($subArray[$key]) && $subArray[$key] === $value) {
            return array("key" => $subKey, "array" => iterator_to_array($subArray));
        }
    }
}

我可以很容易地获得
“chicken”=>“notfree”
,但我似乎无法获得父密钥,
$arrIt->key()
始终返回null?有什么想法吗?

使用两个参数形式的
foreach
,这样就可以得到一个包含“parent”键的变量:


必须在foreach循环中设置一个键值,这将是数组中当前位置的键

foreach ($array as $key => $value) {
    //$key here is your 0/1
    foreach ($value as $_key => $_value) {
        //the inner pairs
        //e.g. $_key = 'chicken' & $_value = 'free'
    }
}

你不需要创建一个迭代器,它已经把它放在了一个级别。

如果你运行它,你会看到它返回
“chicken”
,我不想要
“chicken”
我想要父键(或者在本例中是
1
),如果你运行它,你会看到它返回
“chicken”
,这是行不通的,我不想要
“chicken”
我想要父密钥(在本例中是
1
),我假设每个数组中有多个对,所以我在其中放置了另一个foreach,以证明您能够嵌套这些密钥。
$parent_key_set = null;
foreach ($parse as $parent_key => $child) {
    if (array_key_exists($key, $child)) {
        $parent_key_set = $parent_key;
        break;
    }
}

return $parent_key_set;
$parent_key_set = null;
foreach ($parse as $parent_key => $child) {
    if (array_key_exists($key, $child)) {
        $parent_key_set = $parent_key;
        break;
    }
}

return $parent_key_set;