Показать список всех данных многомерного массива с помощью цикла по каждому элементу - PullRequest
0 голосов
/ 06 марта 2019

Вот мой код массива ...

$data = array(
            'data_1',
            'data_2',
            'data_3',
            'data_4',
            'data_5' => array(
                            'data_5_1',
                            'data_5_2'
                        )
);

Я хочу, чтобы Ountput Like The: -

data_1
data_2
data_3
data_4
data_5
    data_5_1
    data_5_2

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

foreach($data as $da){ 
     echo $da."<br>";
}

Ошибка, найденная как эта

data_1
data_2
data_3
data_4
Notice: Array to string conversion in filename.php on line 3
Array

Пожалуйста, исправьте эту проблему и используйте echo not print_r

Ответы [ 3 ]

2 голосов
/ 06 марта 2019

Лучше всего это сделать с помощью рекурсивной функции, чтобы вы могли работать с любым уровнем вложенных массивов:

function display_list($array) {
    foreach ($array as $k => $v) {
        if (is_array($v)) {
            echo "$k\n";
            display_list($v);
        }
        else {
            echo "$v\n";
        }
    }
}
display_list($data);

Выход:

data_1
data_2
data_3 
data_4 
data_5 
data_5_1 
data_5_2

Демонстрация на 3v4l.org

1 голос
/ 06 марта 2019

Вы можете использовать итераторы:

foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($data)) as $item)
  echo "$item<br>", PHP_EOL;

Как указано в комментариях, если вам нужен ключ или значение в зависимости от типа, вы можете использовать флаг SELF_FIRST и троичный оператор:

foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($data), RecursiveIteratorIterator::SELF_FIRST) as $key => $item)
  echo (is_scalar($item) ? $item : $key) . '<br>', PHP_EOL;
0 голосов
/ 06 марта 2019
foreach ($data as $val) {
    if(is_array($val)){
        foreach ($val as $row) {
            echo "<br>&nbsp;&nbsp;&nbsp;&nbsp;".$row;
        }
    }
    else{ 
         echo "<br>".$val;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...