如何获取多维数组中键的子键


How can I get the child key of a key in a multidimensional array?

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')