使用array_keys访问嵌套的关联数组(PHP)

时间:2017-11-15 13:50:29

标签: php arrays associative-array

我正在尝试访问嵌套的关联数组:

$data = array('1'=>'value1','2'=>'value2','3'=>array('one','two'))

键'3'的值是一个数组。

由于我需要循环我的值,我提取了给定数组的键:

$keys = array_keys($data);

用于获取相关值:

foreach(range(1, 10) as $val):
 echo "key: ".$keys[$val]; 
 echo "value: ".$data[$keys[$val]]; 
endforeach;

现在我想访问与'3'相关的值。 使用$data[$keys[$val]]将无效,因为我返回一个数组,而不是值。

我的问题是:如何使用接近$data[$keys[$val]]的语法访问值'one'?

1 个答案:

答案 0 :(得分:1)

您应该添加条件以检查值是字符串还是数组。 如果它是一个字符串 - 只需回显它,否则 - 访问该数组中的第一个值(key = 0,将打印'one')或使用另一个foreach循环来访问所有这些数组的值。

foreach(range(1, 10) as $val):
 echo "key: ".$keys[$val]; 
 echo "value: ";
 if(is_array($data[$keys[$val]])){ //Is it an array?

  //echo 'one'
  echo $data[$keys[$val]][0];

  //or all the values with a loop
  foreach($data[$keys[$val]] as $val2){
   echo $val2;
   echo ",";
  }


 } else { //it's not an array, we can simply echo it.
  echo $data[$keys[$val]];
 }
endforeach;