2015-03-01 2 views
12

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

$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() путь?

+4

'json_encode'? –

ответ