array(
'World'=>array(
'Asia'=>array(
'Japan'=>array(
'City'=>'Tokyo'
)
)
)
);
在我的数组中,我正在寻找一个密钥:
foreach ($array as $key => $item) {
if(is_array($item)){
if (stripos($key, "Japan") !== false){
echo $key;
}
}
}
结果为Japan
。
对于每个键,我想检查子键是否为“City”。所以我做了以下事情:
foreach ($array as $key => $item) {
if(is_array($item)){
if (stripos($key, "Japan") !== false){
echo $key;
foreach ($key as $k => $i) {
if (stripos($k, "City") !== false){
echo "true";
} else {
echo "false";
}
}
}
}
我希望结果Japan
true
或至少结果Japan
false
但结果仍然只是Japan
我不明白。
答案 0 :(得分:1)
在你的第二个foreach中你使用一个元素($key
),而你应该使用一组元素($array[$key]
,考虑它是一个多维数组)。
foreach ($array as $key => $item) {
if(is_array($item)){
if (stripos($key, "Japan") !== false){
echo $key;
foreach ($array[$key] as $k => $i) {
if (stripos($k, "City") !== false){
echo "true";
} else {
echo "false";
}
}
}
}
我会使用递归算法来解决问题:
function find_array_children_key($array, $children_key, $parent_key=''){
$returning_value = false;
if(is_array($array))
{
foreach($array as $key=>$value)
{
if($key===$children_key)
$returning_value = $parent_key;
else
$returning_value = find_array_children_key($array,$children_key,$key);
if($returning_value!==false)
break;
}
}
return $returning_value;
}
您要拨打的电话,例如find_array_children_key($array,'City')