Menggabungkan nilai tatasusunan berbilang dimensi ke dalam satu baris dalam fail CSV menggunakan PHP
P粉186904731
P粉186904731 2024-03-29 19:55:47
0
1
405

Saya mengalami masalah ini semasa menukar tatasusunan berbilang dimensi kepada csv dengan kod saya.

Ini adalah struktur tatasusunan saya

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

Saya ingin menyimpannya ke fail csv untuk tujuan pelaporan seperti ini:

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

Apa yang saya lakukan dalam kod ini ialah:

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

Tetapi output bukan yang saya mahu, ini adalah output yang dihasilkan oleh kod saya:

vbas31, registered, no
bnmsa1, compromised, no

Ia hanya mendapat data terakhir dalam tatasusunan. Bolehkah saya bertanya apa yang salah dengan kod saya dan apa yang saya lakukan salah?

P粉186904731
P粉186904731

membalas semua(1)
P粉803444331

Saya tidak suka gelung bersarang, mahupun jawapan yang diberikan, tetapi lihat ini:

Susun atur anda:

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

Kod:

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.'
'; }

Anda boleh melakukannya di tempat lain foreach 中使用另一个 foreach. :) Anda boleh menambah kekunci pada baris baharu dahulu dan kemudian melelang ke atas elemen yang tinggal dan menambahnya. $row Pembolehubah hanya digunakan untuk menyemak keputusan.

Kod ini sangat mudah dan anda sepatutnya boleh menganalisisnya sendiri.

Hasil kod di atas ialah:

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

Salam.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan