![](/img/trans.png)
[英]Comparing two csv files based on multiple columns and save in separate file
[英]Save multiple arrays as columns into a csv file
我想在一個輸出csv中編寫多個數組,其中每個數組代表一列。 如果我使用兩個循環,則輸出低於firt循環的輸出。
我的代碼是:
$fp = fopen('output.csv','w');
foreach ($ordernumber as $line) {
fputcsv($fp,explode(',',$line));
}
foreach ($currency as $line) {
fputcsv($fp,explode(',',$line));
}
fclose($fp);
這里是輸出:
item_sku
1126204
1126220
1126230
1126250
1126252
1126256
1126257
1126258
1126260
1126261
1126116.54
currency
EUR
EUR
EUR
EUR
EUR
EUR
EUR
EUR
EUR
EUR
EUR
EUR
因此,但我需要並排輸出-像常規的csv文件一樣。
有人有我的起點嗎?
假設兩個數組中的行彼此匹配,即行1 =行1,則必須循環執行一次。 一種方法是使用您正在處理的數組的索引來訪問另一個數組。
$fp = fopen('output.csv','w');
// add col headings
fputcsv($fp,[ 'item_sku','currency' ]);
foreach ($ordernumber as $idx => $line) {
fputcsv($fp,[ $line,$currency[$idx] ]);
}
但我首先要看一下如何設法生成兩個包含相關數據但不是同一數組的數組並修復該數組
這是執行此操作的一種方法,您必須為每行創建一個數組,然后將其放入csv中:
//first create a array like this.
//manually
$mycsv[1] = array('EUR', '1126261');
$mycsv[2] = array('EUR', '1128961');
$mycsv[3] = array('EUR', '1126791');
//programitically; assuming both array are equally based on line by line rows
$mycsv = array();
for ($i=0;$i<count($arr1);$i++){
$mycsv[$i] = array($arr1[$i],$arr2[$i]);
}
$fp = fopen('output.csv','w');
foreach ($mycsv as $line) {
fputcsv($fp, $line, ',');
}
fclose($fp);
要完成@RiggsFolly答案,如果您的數組沒有相同的索引,則可以執行以下操作:
// Check your two arrays have the same size
if (count($ordernumber) === count($currency)) {
$fp = fopen('output.csv','w');
foreach ($ordernumber as $line) {
fputcsv($fp, [$line, array_shift($currency)]);
}
fclose($fp);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.