Обход и вывод многомерного массива

245
05 октября 2017, 14:24

Есть массив:

Array
(
    [title] => Array
        (
            [0] =>                      Mortal Kombat X          
            [1] =>                      Mortal Kombat 2   
        )
    [desc] => Array
        (
            [0] => 489
            [1] => 32
        )
    [metatitle] => Array
        (
            [0] => 34
            [1] => 4
        )
    [date] => Array
        (
            [0] => 17.02.2017
            [1] => 17.02.2017
        )
    [magnet] => Array
        (
            [0] => http://site1
            [1] => http://site2
        )
    [torrent] => Array
        (
            [0] => http://site1
            [1] => http://site2
        )
)

Мне нужно сделать цикл и вытащить по 1 значению с 0 индексом, потом увеличить счетчик и еще раз пройти. Я знаю цикл for, но не могу разобраться с фореч. Тут неизвестно конечное число элементов в массиве. Поэтому нужно с нуля начинать и выводить до тех пор, пока не кончится.

Алгоритм такой: 1 цикл прохода должен дать такой результат:

Mortal Kombat X | 489 | 34 | 17.02.2017 | http://site1 | http://site1

Затем счетчик увеличивается и вытягиваются данные под индексом 1.

Как сделать такое? Не могу побороть пока-что фореч.

Answer 1

Скорее всего как-то так:

<?php
$arr = array(
  'title' => array('Mortal Kombat X', 'Mortal Kombat 2'),
  'desc' => array(489, 32),
  'metatitle' => array(34, 4),
  'date' => array('17.02.2017', '17.02.2017'),
  'magnet' => array('http://site1', 'http://site2'),
  'torrent' => array('http://site1', 'http://site2')
);
$newArr = array();
foreach($arr as $key => $val) {
  for($i = 0; $i < count($val); $i++) {
    $newArr[$i][$key] = $val[$i];
  }
}
print_r($newArr);
/*
*  Array (
*    [0] => Array ( [title] => Mortal Kombat X [desc] => 489 [metatitle] => 34 [date] => 17.02.2017 [magnet] => http://site1 [torrent] => http://site1 )
*    [1] => Array ( [title] => Mortal Kombat 2 [desc] => 32 [metatitle] => 4 [date] => 17.02.2017 [magnet] => http://site2 [torrent] => http://site2 )
*  )
*/
for($i = 0; $i < count($newArr); $i++) {
  echo implode(' | ', $newArr[$i]) . '<br/>';
}
/*
*  Mortal Kombat X | 489 | 34 | 17.02.2017 | http://site1 | http://site1
*  Mortal Kombat 2 | 32 | 4 | 17.02.2017 | http://site2 | http://site2
*/
READ ALSO
Как конвертировать id в viewkey?

Как конвертировать id в viewkey?

Имеется ссылка видео https://cvphncdn

284
PHP не подключается файл Requre_once

PHP не подключается файл Requre_once

Здраствуйте! Проблема в следующем есть сайт я его разделил на блоки Head, content, sidebar и footer в indexphp require работает и подлкючает файл с базой данных...

268
Наследование в Codeigniter

Наследование в Codeigniter

Хочу создать свой базовый класс и наследовать от негоКак это сделать в codeigniter?

218
Установка сервера Oracle и web-сервера Apache на одной машине

Установка сервера Oracle и web-сервера Apache на одной машине

Разъясните, пожалуйста, можно ли разместить на одной машине (под Ubuntu Server 1604) сервер Oracle и web-сервер Apache? Apache через php должен иметь доступ к БД, хранящейся...

235