Строчная обработка массива PHP

В текстовом приложении, которое я кодирую, я использую массив для печати таблицы исполнителей. Массив художников выглядит так:

$artists = [
    [ "Avril Lavigne"               ],
    [ "3 Doors Down"                ],
    [ "Celine Dion"                 ],
    [ "Evanescence"                 ],
    [ "Shania Twain"                ],
    [ "Green Day"                   ],
    //...
];

Перед печатью я делаю некоторые изменения в массиве. У меня есть папка для каждого исполнителя, содержащая файлы текстов песен. Я добавляю имена папок в массив $artists для последующего использования:

$folder_fix = [
    [" ",   "_" ],
    [".",   ""  ],
    ["&",   "n" ],
];

for ($i = 0; $i < count($artists); $i++) {
    $folder_name = strtolower($artists[$i][0]);
    for ($k = 0; $k < count($folder_fix); $k++) {
        $folder_name = str_replace($folder_fix[$k][0], $folder_fix[$k][1], $folder_name);
    }
    array_push($artists[$i], $folder_name);
}

Позже я добавляю в массив количество альбомов и треков для каждого исполнителя:

$lyrics_base = "lyrics/";
for ($i = 0; $i < count($artists); $i++) {
    $albums_path    = $lyrics_base . $artists[$i][1] . "/*";
    $tracks_path    = $lyrics_base . $artists[$i][1] . "/*/*";
    $albums         = count(glob($albums_path));
    $tracks         = count(glob($tracks_path));
    array_push($artists[$i], $albums);
    array_push($artists[$i], $tracks);
}

Конечный результат массива выглядит так:

$artists = [
    [ "Avril Lavigne",  "avril_lavigne",    5,  61  ],
    [ "3 Doors Down",   "3_doors_down",     5,  13  ],
    [ "Celine Dion",    "celine_dion",      7,  22  ],
    [ "Evanescence",    "evanescence",      4,  10  ],
    [ "Shania Twain",   "shania_twain",     3,  12  ],
    [ "Green Day",      "green_day",        8,  26  ],
    //...
];

Теперь моя проблема в том, что этот процесс происходит каждый раз, когда я захожу на страницу. 2-й, 3-й и 4-й столбцы создаются снова и снова. Я думаю, что это избыточно.

Я хочу сохранить конечный результат массива и использовать его на странице. Если бы это был JavaScript, я бы использовал JSON.stringify(), но в PHP я не знаю, как получить конечный результат массива. print_r() не выполняет эту работу, потому что печатает это так:

Array
(
    [0] => Array
        (
            [0] => Avril Lavigne
            [1] => avril_lavigne
            [2] => 5
            [3] => 61
        )

    [1] => Array
        (
            [0] => 3 Doors Down
            [1] => 3_doors_down
            [2] => 5
            [3] => 13
        )
...

Я хочу так:

[
    [
        "Avril Lavigne",
        "avril_lavigne",
        5,
        61
    ],
    [
        "3 Doors Down",
        "3_doors_down",
        5,
        13
    ],
    //...
]

Есть ли способ распечатать массив JSON.stringify() способом?


person akinuri    schedule 01.03.2015    source источник


Ответы (1)


Это то, что вы хотите?

эхо json_encode ($ художники)

PHP: json_encode

person Nik Drosakis    schedule 01.03.2015
comment
Благодарю вас! 2020, и я не знал, что вы можете просто json_encode любой php-объект в строку json. - person Hanlet Escaño; 24.02.2020