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

I have one excel orginal.csv file

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

And another copy.csv file

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

I want to replace rows from orginal.csv to copy.csv where ID is the same. Can I do this manually or maybe somehow using PHP?

I search for some options on the internet, but I only found getcsv and readcsv functions that can't help me in this case. Cause this is something like updating CSV file.

It may end up in request timeout in PHP because it requires so many loops to do it. If someone can reduce the time complexity of this program then it will work. if it even works it will take a lot of time to do it.

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);
      }

    } 
   } 
  } 
 } 
} 
?>

I've created a little soulution. If order is important you don't have to index the array and loop through the copied array.

<?php
if(file_exists('output.csv'))
{
    unlink('output.csv');
}

function fputcsv_eol($handle, $array, $delimiter = ',', $enclosure = '"', $eol = "
") {
    $return = fputcsv($handle, $array, $delimiter, $enclosure);
    if($return !== FALSE && "
" != $eol && 0 === fseek($handle, -1, SEEK_CUR)) {
        fwrite($handle, $eol);
    }
    return $return;
}

function scanFile($sFilename, $iIndexColumn)
{
    $rFile = fopen($sFilename, 'r');
    $aData = array();

    while(($aLine = fgetcsv($rFile)) !== false)
    {
        $aData[$aLine[$iIndexColumn]] = $aLine;
    }
    fclose($rFile);
    return $aData;
}

$iIndexColumn = 0;
$iValueColum = 2;

$aOriginalData = scanFile('original.csv', 0);
$aCopyData = scanFile('copy.csv', 0);

foreach($aOriginalData as $iID => $aOriginalDatum)
{
    if(array_key_exists($iID, $aCopyData))
    {
        $aCopyData[$iID] = $aOriginalDatum;
    }
}

$rFile = fopen('output.csv', 'w');
foreach($aCopyData as $aCopyDatum)
{
    fputcsv_eol($rFile, $aCopyDatum, ',', '"',"
");
}

fclose($rFile);