将行从一个csv文件替换为另一个csv,其中id为samePHP?

时间:2018-11-14 14:27:12

标签: php csv

我有一个excel orginal.csv文件

ID     Name     Price
1      Xblue      12
2      Yblue      32
3      Zblue      52

和另一个copy.csv文件

ID     Name     Price
1      Xblue      89
2      Yblue      43
3      Zblue      45

我想将orginal.csv中的行替换为ID相同的copy.csv。 我可以手动执行此操作还是使用PHP?

我在互联网上搜索了一些选项,但是在这种情况下,我只找到了无法帮助我的getcsv和readcsv函数。原因类似于更新CSV文件。

2 个答案:

答案 0 :(得分:0)

它可能最终会导致PHP请求超时,因为这样做需要很多循环。如果有人可以减少该程序的时间复杂度,那么它将起作用。如果它能奏效的话,将花费很多时间。     

while(! feof($f_pointer)){ //open old csv to update loop1
$ar=fgetcsv($f_pointer);  // getting first row

for($i=0;$i<count($ar);$i++){ //loop2 first row array
 $f_pointer2=fopen("new.csv","r"); open new csv to get data
while(! feof($f_pointer2)){    // loop3 to find ID in new csv
$ar2=fgetcsv($f_pointer2);    //getting each row in array
for($j=0;$j<count($ar2);$j++){   //loop4 to compare id of old csv to new csv and update data

if($ar[i] == $ar2[j]){  
foreach ($ar2 as $fields) {   //loop5
fputcsv($f_pointer, $fields);
      }

    } 
   } 
  } 
 } 
} 
?>

答案 1 :(得分:0)

我创造了一些解决方案。如果顺序很重要,则不必索引数组并遍历复制的数组。

const device = this.selectedDevtype.devices.find(item => +item.device_id === +this.deviceID)