【问题标题】:Accessing nested associative array using array_keys (PHP)使用 array_keys (PHP) 访问嵌套关联数组
【发布时间】:2017-11-15 13:50:28
【问题描述】:

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

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

【问题讨论】:

  • 您如何迭代数组是否有特定原因?一个简单的foreach($data as $key => $value) {} 将达到相同的结果。

标签: php arrays associative-array


【解决方案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;

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2017-06-19
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2023-03-22
    • 2018-11-16
    相关资源
    最近更新 更多