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
.
对于每个键,我想检查子键是否为"城市"。所以我做了以下工作:
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
。
在你的第二个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')