使用数组_键访问嵌套关联数组(PHP)

使用数组_键访问嵌套关联数组(PHP),php,arrays,associative-array,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: ".$da

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

$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”

您应该添加一个条件来检查值是字符串还是数组。 如果它是一个字符串-只需回显它,否则-访问该数组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;

迭代数组的方式是否有特定的原因?一个简单的foreach$data作为$key=>$value{}将获得相同的结果。