我正在尝试遍历一个数组,并返回一个数组的键和子数组,该数组具有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?有什么想法吗?
答案 0 :(得分:1)
您必须在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'
}
}
您不需要创建一个已将其放置在某个级别的迭代器。
答案 1 :(得分:0)
使用foreach
的双参数形式,因此您获得包含“父”键的变量:
foreach($arrIt as $parentKey => $sub) {
....
if(isset(...)) {
return $parentKey;
}
}
答案 2 :(得分:0)
$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;