我有下一個 foreach:
foreach(json_decode($result[$k], "true") as $result) {
fputcsv($fp, $result);
}
如果我將該結果的 var_dump 放入,它將回傳一個陣列串列,例如:
["Id"]=> string(7) "1"
["Name"]=> string(29) "Name"
["Description"]=> string(19) "Description"
["Address"]=> string(27) "Address"
["Schedule"]=> array(7) {
[0]=> array(2) {
["startHour"]=> string(5) "00:00"
["stopHour"]=> string(5) "23:59"
}
[1]=> array(2) {
["startHour"]=> string(5) "00:00"
["stopHour"]=> string(5) "23:59"
}
[2]=> array(2) {
["startHour"]=> string(5) "00:00"
["stopHour"]=> string(5) "23:59"
}
. . .
}
如果我放入fputcsv($fp, $result)那個 foreach 回圈,那么在調度之前一切正常。來自 csv 的行如下所示:
1, Name, Description, Address, Array.
但是,我想要什么而不是“陣列”,我想要類似的東西
00:00-23:59.
喜歡:
1, Name, Description, Address, 00:00-23:59, 00:00-23:59, 00:00-23:59
(一周中的每一天)。誰能幫我這個?謝謝!
uj5u.com熱心網友回復:
https://i.stack.imgur.com/UDNBU.png
$result = [
[
"Id" => "1",
"Name" => "Name",
"Description" => "Description",
"Address" => "Address",
"Schedule" =>
[
[
"startHour" => "00:00", "stopHour" => "23:59"
],
[
"startHour" => "00:00", "stopHour" => "23:59"
],
[
"startHour" => "00:00", "stopHour" => "23:59",
]
]
,
],
[
"Id" => "2",
"Name" => "Name2",
"Description" => "Description",
"Address" => "Address",
"Schedule" =>
[
[
"startHour" => "00:00", "stopHour" => "23:59"
],
[
"startHour" => "00:00", "stopHour" => "23:59"
],
[
"startHour" => "00:00", "stopHour" => "23:59",
]
]
,
]
];
$header = array('Tr', 'Name', 'Description', 'Address', 'Array.');
$fp = fopen('test.csv', 'w');
fputcsv($fp, $header);
foreach ($result as $item) {
$row = [];
$row[] = $item['Id'];
$row[] = $item['Name'];
$row[] = $item['Description'];
$row[] = $item['Address'];
foreach ($item['Schedule'] as $value) {
$row[] = $value['startHour'] . '-' . $value['stopHour'];
}
fputcsv($fp, $row);
}
uj5u.com熱心網友回復:
foreach如果您一直設定 7 個計劃條目,您可以在您的 中執行此操作
$result = array_values($result);
$schedule = $result[4];
unset($result[4]);
$schedule = array_map(function($a){ return implode('-',$a);},$schedule);
$result = array_merge($result,$schedule);
注意:您應該為 foreach 變數指定另一個名稱,例如$item,因為您使用的是名為$resultinjson_decode
uj5u.com熱心網友回復:
您將需要分別處理 2 個陣列。
我不得不將一些資料偽造為陣列,所以我錯過了代碼的 json 轉換部分
$json =
[
["Id"=>"1", "Name"=>"Name", "Description"=>"Description","Address"=> "Address",
"Schedule" => [ ["startHour"=> "00:00", "stopHour"=> "23:59"],
["startHour"=> "00:00", "stopHour"=> "23:59"],
["startHour"=> "00:00", "stopHour"=> "23:59"]
]
],
["Id"=>"2", "Name"=>"Fred", "Description"=>"Bloke","Address"=> "1 main st",
"Schedule" => [ ["startHour"=> "02:00", "stopHour"=> "20:59"],
["startHour"=> "03:00", "stopHour"=> "21:59"],
["startHour"=> "04:00", "stopHour"=> "22:59"]
]
]
];
$fp = fopen('tst.csv', 'w');
foreach($json as $result) {
$t1 = [ $result['Id'], $result['Name'], $result['Description'], $result['Address'] ];
// process the schedule array now seperately
$t2 = [];
foreach($result['Schedule'] as $sch){
$t2[] = $sch['startHour'] . '-' . $sch['stopHour'];
}
fputcsv($fp, array_merge($t1,$t2));
}
fclose($fp);
結果
1,Name,Description,Address,00:00-23:59,00:00-23:59,00:00-23:59
2,Fred,Bloke,"1 main st",02:00-20:59,03:00-21:59,04:00-22:59
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/529031.html
標籤:phpCSVfor循环
