web-dev-qa-db-fra.com

PHP array stringify

Dans une application de paroles, je code, j'utilise un tableau pour imprimer une table d'artistes. Le tableau des artistes ressemble à ceci:

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

Avant de l'imprimer, j'apporte quelques modifications au tableau. J'ai un dossier pour chaque artiste qui contient les fichiers de paroles. J'ajoute les noms de dossier au tableau $artists Pour une utilisation ultérieure:

$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);
}

Plus tard, j'ajoute l'album et le nombre de pistes de chaque artiste au tableau:

$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);
}

Le résultat final du tableau ressemble à ceci:

$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  ],
    //...
];

Maintenant, mon problème est que ce processus se produit chaque fois que je visite la page. Les 2e, 3e et 4e colonnes sont créées encore et encore. Je pense que c'est redondant.

Je veux enregistrer le résultat final du tableau et l'utiliser sur la page. Si c'était JavaScript, j'utiliserais JSON.stringify(), mais en PHP je ne sais pas comment obtenir le résultat final du tableau. print_r() ne fait pas le travail, car il l'imprime comme ceci:

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
        )
...

Je le veux comme ça:

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

Existe-t-il un moyen d'imprimer le tableau de la manière JSON.stringify()?

21
akinuri

C'est ce que tu veux?

echo json_encode ($ artistes)

PHP: json_encode

54
Nik Drosakis