我的代码将多维数组转换为 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
变量仅用于检查结果。代码很简单,你应该可以自己分析。
上述代码的结果是:
问候。