Rumah > Soal Jawab > teks badan
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粉8034443312024-03-30 09:49:25
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.