Combinez les valeurs d'un tableau multidimensionnel en une seule ligne dans un fichier CSV à l'aide de PHP
P粉186904731
P粉186904731 2024-03-29 19:55:47
0
1
389

J'ai ce problème lors de la conversion d'un tableau multidimensionnel en CSV avec mon code.

Voici la structure de mon tableau

Array (
        [vbas31] => 
                Array ( [enabled] => Array ( [0] => NO ) 
                        [registered] => Array ( [0] => NO ) ) 
        [bnmsa1] => 
                Array ( [enabled] => Array ( [0] => YES ) 
                        [registered] => Array ( [0] => NO )
                        [compromised] => Array ( [0] => NO ) )
      )

Je souhaite l'enregistrer dans un fichier csv à des fins de reporting comme ceci :

vbas31, enabled, no, registered, no
bnmsa1, enabled, yes, registered, no, compromised, no

Ce que j'ai fait dans le code est ceci :

$file = fopen('testfile.csv','w');
$keysarr = array_keys($jsonArr);

for($i = 0; $i < count($jsonArr); $i++) {
    foreach($jsonArr[$keysarr[$i]] as $key => $value) {
        echo $key . " : " . $value[0] . "<br>";
    
    }
    $new_line = [$keysarr[$i], $key, $value[0]];


    fputcsv($file, $new_line);
}

fclose($file);

Mais le résultat n'est pas ce que je veux, voici le résultat généré par mon code :

vbas31, registered, no
bnmsa1, compromised, no

Il n'obtient que les dernières données du tableau. Puis-je demander quel est le problème avec mon code et ce que je fais de mal ?

P粉186904731
P粉186904731

répondre à tous(1)
P粉803444331

Je n'aime pas les boucles imbriquées, ni les réponses fournies, mais regardez ça :

Votre tableau :

$yourArray = [
    'bnas31' => [
            'enabled' => [0 => 'NO'],
            'registered' => [0 => 'NO']
    ],
    'bnmsa1' => [
        'enabled' => [0 => 'YES'],
        'registered' => [0 => 'NO'],
        'compromised' => [0 => 'NO']
    ]
];

Code :

foreach($yourArray as $key1 => $value1) {
    $row = $key1;
    $line = [$key1];
    foreach ($value1 as $key2 => $value2) {
        $row .= ','.$key2.','.$value2[0];
        $line = array_merge($line, [$key2, $value2[0]]);
    }
    echo $row.'
'; }

Vous pouvez le faire dans un autre foreach 中使用另一个 foreach. :) Vous pouvez d'abord ajouter les clés à la nouvelle ligne, puis parcourir les éléments restants et les ajouter. $row Les variables ne sont utilisées que pour vérifier les résultats.

Le code est très simple et vous devriez pouvoir l'analyser vous-même.

Le résultat du code ci-dessus est :

bnas31,enabled,NO,registered,NO
bnmsa1,enabled,YES,registered,NO,compromised,NO

Salutations.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!