[英]Add Key => Value to PHP Array?
我試圖將鍵“ username”的值添加為“ johnsmith”到每個數組,但是無法使其正常工作。
這是生成數組的代碼:
foreach($rows as $row)
{
$csv[] = array_combine($header, $row);
}
這是數組輸出:
[0] => Array (
[Date] => 4/22/2018
[Calories Burned] => 3,178
[Steps] => 9,966
[Distance] => 4.86
[Floors] => 8
[Minutes Sedentary] => 762
[Minutes Lightly Active] => 204
[Minutes Fairly Active] => 79
[Minutes Very Active] => 51
[Activity Calories] => 1,778
)
[1] => Array (
[Date] => 4/23/2018
[Calories Burned] => 3,284
[Steps] => 9,671
[Distance] => 4.69
[Floors] => 9
[Minutes Sedentary] => 805
[Minutes Lightly Active] => 180
[Minutes Fairly Active] => 101
[Minutes Very Active] => 68
[Activity Calories] => 1,903
)
[2] => Array (
[Date] => 4/24/2018
[Calories Burned] => 3,714
[Steps] => 12,312
[Distance] => 5.92
[Floors] => 6
[Minutes Sedentary] => 676
[Minutes Lightly Active] => 239
[Minutes Fairly Active] => 131
[Minutes Very Active] => 84
[Activity Calories] => 2,462
)
我嘗試了以下代碼,但是它只是覆蓋了數組:
$csv += [ "username" => johnsmith ];
任何幫助將非常感激。
提姆
當您建立陣列時
$headers[] = 'username'; //add the key to the end of your headers
foreach($rows as $row){
$row[] = 'johnsmith'; //add value to the end of the row.
//now combine them.
$csv[] = array_combine($header, $row);
}
請注意, array_combine
將帶您到這里,兩個數組的長度必須相同。 因此,通過更改$row
您將添加一些可能不在標題中的內容,如果標題沒有用戶名,則必須添加它。
您可能還想使$header
與$csv
子數組同步。 它使生活更輕松。
當您將它們結合在一起時(說明)
$headers = [
"Date",
"Calories Burned",
"Steps",
"Distance",
"Floors",
"Minutes Sedentary",
"Minutes Lightly Active",
"Minutes Fairly Active",
"Minutes Very Active",
"Activity Calories"
];
$row = [
"4/23/2018",
"3,284",
"9,671",
"4.69",
"9",
"805",
"180",
"101",
"68",
"1,903"
];
這些結合起來很好,但是如果您添加
$row = [
"4/23/2018",
"3,284",
"9,671",
"4.69",
"9",
"805",
"180",
"101",
"68",
"1,903",
"username" => "johnsmith"
];
與$headers
結合使用時會出錯,因為$row
比$headers
長1。 但是,如果將標題添加到末尾,則將數據添加到該行的末尾。 一切都很好,因為它們的長度相同。
數組合並是一個很棒的功能,但是使用它可能有點討厭。
請注意:
其他解決方案可能會添加數據,但是請考慮如果要為此創建CSV文件,會發生什么。 因為他們還沒有修改標題行。 當你做
fputcsv($f, $header);
您的標題將會很短。
如果您只是讀取CSV文件,則可以不更改標題就可以了。 但是請記住,如果將它們(標頭)用於其他任何用途,它們將與您的數據不同步。
例如:即使閱讀時,您也可以將標題行用於表中的列以顯示數據,但您會發現自己短了一個標題。
僅基於您如何命名變量,就好像您是從數據庫中提取數據並從中創建CSV文件一樣? 在這方面我可能是錯的,但是如果是這種情況,您可以再簡化一點。
作為獎勵
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=example.csv');
header('Pragma: no-cache');
$f = fopen('php://output'); //PHP stream wrapper
$headers[] = 'username';
fputcsv($f, $headers);
foreach($rows as $row){
$row[] = 'johnsmith'; //add value to the end of the row.
fputcsv($f, $row);
}
這樣做是跳過制作一個單獨的數組和一個“真實”文件。
它有幾個優點和缺點
好處
壞處
如果您不這樣做,則可以在其他地方使用它。
我要做的主要工作之一就是創建CSV文件,我每天都會與他們合作。 所以我有大約5年的閱讀和寫作經驗。 這就是我所知道的。
干杯!
您必須將其分別插入每一行:
foreach($rows as $row) {
$csv[] = array_merge(
array_combine($header, $row),
array('username' => $johnsmith, 'anything' => 'else')
);
}
我一直喜歡一個盡可能少地修改現有代碼的解決方案,所以這是我的:
foreach ($rows as $row) {
$csv[] = array_combine($header, $row) + ["username" => "johnsmith"];
}
說明:只需將任何其他值作為數組添加到array_combine()
的結果中array_combine()
。
這是一個例子:
foreach($rows as $row) {
$newArray=array_combine($header, $row);
$newArray["username"]="johnsmith";
$csv[] = $newArray;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.