PHP foreach循环遍历多维数组

时间:2014-02-01 22:21:14

标签: php arrays

我在PHP中有一个数组,var_dump($result)方法显示如下结果:

array(6) { [0]=> array(1) { ["Start"]=> string(14) "1/8/2014 10:42" } [1]=> array(1) { ["Driving route"]=> string(14) "1/8/2014 10:59" } [2]=> array(1) { ["Lunch-Rest Break"]=> string(14) "1/8/2014 11:50" } [3]=> array(1) { ["Break"]=> string(14) "1/8/2014 12:03" } [4]=> array(1) { ["Waiting"]=> string(14) "1/8/2014 13:39" } [5]=> array(1) { ["End"]=> string(14) "1/8/2014 14:28" } }

我想打印每个键及其对应的值,所以我使用foreach循环来完成,但得到以下结果:

foreach($result as $activity => $time){
 echo $result[$activity].' / '.$time.'</br>';
}

Array / Array
Array / Array
Array / Array
Array / Array
Array / Array
Array / Array

那我怎么能这样做呢?

4 个答案:

答案 0 :(得分:4)

尝试这种方式。作为数组的示例,我只设置了两个值:

  $arrays = array(
        0=> array("Start"=>'1/8/2014 10:42'),
        1=> array("Lunch-Rest Break"=>'1/8/2014 10:59')

    );
    foreach($arrays as $array){
       foreach ( $array as $key =>$value){
           echo $key .'-'. $value;
       }

    }

答案 1 :(得分:0)

你有嵌套数组,a.k.a多维数组。

当迭代它们时,你将结束另一个阵列:

foreach($result as $record){
 echo $record[$activity].' / '.$time.'</br>';
}

答案 2 :(得分:0)

您可以使用递归函数(一个调用自身的函数)来循环任意数量的嵌套数组并处理内容。以下是一个示例: Live demo (click).

$myArr = [
  'foo' => 'foo value',
  'bar' => 'bar value',
  'baz' => [
    'nested foo' => 'nested foo value',
    'nested bar' => 'nested bar value'
  ],
  'qux' => 'qux value'
];

function foo($arr) {
  foreach ($arr as $k => $v) {
    if (is_array($v)) {
      foo($v);
    }
    else {
      echo "{$k} = {$v}<br>";       
    }
  }
}

foo($myArr);

答案 3 :(得分:0)

您假设一个数组具有键/值对,但您提供的数组实际上是一个普通的整数索引数组,其值为另一个具有1个键/值对的数组。

你可以这样做:

foreach ($result as $arr) {
    foreach ($arr as $activity => $time) {
        echo $activity .'/'. $time;
    }
}

外部循环将运行6次,每个外部循环内部循环一次。