我的程式碼將多維數組轉換為 csv 時遇到此問題。
這是我的陣列的結構
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 ) ) )
我想將其儲存到 csv 檔案以用於報告目的,如下所示:
vbas31, enabled, no, registered, no bnmsa1, enabled, yes, registered, no, compromised, no
我在程式碼中所做的事情是這樣的:
$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);
但是輸出不是我想要的,這是我的程式碼產生的輸出:
vbas31, registered, no bnmsa1, compromised, no
它只取得數組中的最後一個資料。我可以問我的程式碼有什麼問題以及我做錯了什麼嗎?
我不喜歡巢狀循環,也不喜歡提供的答案,但看看這個:
你的陣列:
#程式碼:
您可以在另一個
foreach
中使用另一個foreach
。 :) 您可以先將鍵新增到新行,然後迭代其餘元素並新增它們。$row
變數僅用於檢查結果。程式碼很簡單,你應該可以自己分析。
上述程式碼的結果是:
問候。