2014-02-01 4 views
0

Привет У меня есть массив в 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($result as $activity => $time){ 
echo $result[$activity].'/'.$time.'</br>'; 
} 

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

Как я могу это сделать?

ответ

4

Try таким образом. В качестве примера вашего массива я установить только два значения:

$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

Это лучше, чем у меня, потому что я предполагал, что он знал, какие ключи были. Это будет работать, когда ключи неизвестны – helion3

0

У вас есть вложенные массивы, a.k.a многомерные массивы.

Когда итерация их, вы завершаете с другим массивом:

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

Это проводное использование вашего кода. Я получаю «/» – OussamaLord

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); 
0

Вы предполагаете массив пар ключ/значение, но массив вы предоставите в действительности является нормальным числом индексируется массив в качестве значения другой массив с парой 1 ключ/значение.

Вы можете сделать это:

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

Внешний цикл будет выполняться 6 раз, внутренний цикл один раз за внешний контур.

Смежные вопросы