PHP Запись массива в строку рекурсией

151
03 марта 2019, 18:30

есть такой массив и функция, при обычном выводе (echo) всё корректно выводится, но при записывании в строку массив записывается в не понятном порядке, пример ниже

    $arr = array (
    "2018.10.20" => array (
        "15:00" => array (
            "select_place_of_performance" => "Событие 1",
            "data_concerts" => "2018.10.20",
            "time_concerts" => "15:00",
            "time_sound_check" => "13:00",
            "select_performers 1" => array (
                0 => "Вася Пупкин 1",
                1 => "Вася Пупкин 2",
                2 => "Вася Пупкин 3",
            ),
        ),
        "18:00" => array (
            "select_place_of_performance" => "Событие 2",
            "data_concerts" => "2018.10.20",
            "time_concerts" => "18:00",
            "time_sound_check" => "13:00",
            "select_performers 2" => array (
                0 => "Вася Пупкин 1",
                1 => "Вася Пупкин 2",
                2 => "Вася Пупкин 3",
            ),
        ),
    ),
    "2018.10.22" => array (
        "22:00" => array (
            "select_place_of_performance" => "Событие 3",
            "data_concerts" => "2018.10.22",
            "time_concerts" => "22:00",
            "time_sound_check" => "13:00",
            "select_performers 3" => array (
                0 => "Вася Пупкин 1",
                1 => "Вася Пупкин 2",
                2 => "Вася Пупкин 3",
            ),
        ),
    ),
);

если записывать массив в строку

function array_str ($array, $name_array = null) {
    $str = "";
    foreach ($array as $key =>$value) {
        if (is_array($value)) {
            $str .= $key;
            $str .= "<br>";
            array_str ($value);
        } else {
            $str .= $key;
            $str .= "<br>";
        }   
    }
    echo $str;
}

то выводится не так как ожидается

0
1
2
select_place_of_performance
data_concerts
time_concerts
time_sound_check
select_performers 1
0
1
2
select_place_of_performance
data_concerts
time_concerts
time_sound_check
select_performers 2
15:00
18:00
0
1
2
select_place_of_performance
data_concerts
time_concerts
time_sound_check
select_performers 3
22:00
2018.10.20
2018.10.22

при выводе оператором echo

function array_str ($array, $name_array = null) {
    foreach ($array as $key =>$value) {
        if (is_array($value)) {
            echo $key;
            echo "<br>";
            array_str ($value);
        } else {
            echo $key;
            echo "<br>";
        }
    }
}

всё выводится корректно

2018.10.20
15:00
select_place_of_performance
data_concerts
time_concerts
time_sound_check
select_performers 1
0
1
2
18:00
select_place_of_performance
data_concerts
time_concerts
time_sound_check
select_performers 2
0
1
2
2018.10.22
22:00
select_place_of_performance
data_concerts
time_concerts
time_sound_check
select_performers 3
0
1
2
Answer 1

Замените вашу функцию array_str такой

function array_str($array) {
    $str = "";
    foreach ($array as $key =>$value) {
        $str .= $key;
        $str .= "<br>";
        if (is_array($value)) {
            $str .= array_str($value);
        }   
    }
    return $str;
}
echo array_str($arr);
READ ALSO
API Platform — кто-то использует?

API Platform — кто-то использует?

Интересует вопрос, использует ли кто-то API Platform (api-platformcom) на реальных проектах в продакшене? Или хотя бы ведется какая-то разработка на нем?

209
Эффект прокрутки блока

Эффект прокрутки блока

Как реализовать эффект прокрутки сначала левого блока до конца, затем правого как в примере на странице https://7day-newscom/article/full/906?utm_content=[TEASER_ID]&utm_source=906&utm_term=&utm_medium=&utm_campaign=&sid1=&sid2=&sid3=&sid4=full&sid5=7

160
Как считать комментарий в PHP?

Как считать комментарий в PHP?

В многих фреймворках и библиотеках используется ввод какой-то информации (типа конфиг) в комментарий, а php как-то его считывает и использует...

186
Кодировка в выводе данных mysql php

Кодировка в выводе данных mysql php

Не могу задать кодировкуЕсть php код:

191