我对转换数组有问题。我的结构就像
$threeDimensionalArray = [
[
[
'name' => 'name1',
],
[
'name' => 'name2',
],
],
[
[
'time' => 123,
'anyField'=>22222,
'anyField1'=>22222,
'anyField2'=>22222
],
[
'time' => 457,
'anyField'=>22222,
'anyField1'=>22222,
'anyField2'=>22222
],
],
];
我需要将此数组转换为二维数组,然后通过fputscsv将每个数组保存到csv文件中
示例
CSV的第一行
“名称1”,“名称2”,
第二行
123、457等
答案 0 :(得分:1)
此解决方案将在您的特定情况下提供帮助:
$to_csv = [];
foreach ($threeDimensionalArray as $first_level) {
foreach ($first_level as $second_level) {
foreach ($second_level as $key => $value) {
$to_csv[$key][] = $value;
}
}
}
$fp = fopen('file.csv', 'w');
foreach ($to_csv as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
这个想法是首先通过按键分组将数组配置为两层数组,然后再使用fputcsv()。
答案 1 :(得分:0)
我解决了这个问题:)
foreach ($threeDimensionalArray as $firstDimensional) {
$array= [];
foreach ($firstDimensional as $twoDimensional) {
$array[] = $twoDimensional['name'] ?? null .$twoDimensional['time'] ?? null;
}
fputcsv($fp, $array);
$returnArray[]=$array;
}