![](/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.