Php 查找密钥=>;多维数组中的值,但返回父键?
我试图循环遍历一个数组,并返回一个具有set key=>值的数组的键和子数组 例如 假设我有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
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;