我有CSV文件:
test2.csv
ID Name Price
Q4 Quail 400
Q2 Quail 500
Q1 Quail 100
我用PHP打开此文件,检查条件,如果价格更大或更小,保存新价格,然后我想用php将其放入新的CSV文件中。
这是我的代码:
$file = fopen('test2.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
if (array_key_exists($line[0], $result)) {
$oldPrice= 500;
$oldPriceplus20= $oldPrice +($oldPrice*0.2);
$oldPriceminus20= $oldPrice -($oldPrice*0.2);
$newPrice = $line[2];
print( "The 'first' element is in the array\nOld price is: ".$oldPrice."\nNew price is:".$newPrice."\n");
print("Old price with +20% is:".$oldPriceplus20."\nOld price with -20% is:".$oldPriceminus20."\n");
if ($newPrice <= $oldPriceplus20 && $newPrice >= $oldPriceminus20){
echo"Take new price\n\n";
}
else{
$line[2] = $oldPrice;
echo"Take the old price.\n";
}
}
$fp = fopen('write.csv', 'w');
foreach ($line as $lin) {
fputcsv($fp, array($lin), ',', ' ');
}
fclose($fp);
}
fclose($file);
但这是我得到的输出:
Q1
Quail
100
我在哪里弄错了?我的新CSV文件应该与test2.csv几乎相同,只是如果需要的话要加上新的价格。
答案 0 :(得分:0)
问题是您要覆盖输出文件并写入输入文件的每个元素,就像它是文件中的一行一样。此版本从头开始打开输出文件,然后在处理它时仅添加每一行...
$file = fopen('test2.csv', 'r');
$fp = fopen('write.csv', 'w');
while (($line = fgetcsv($file)) !== FALSE) {
if (array_key_exists($line[0], $result)) {
$oldPrice= 500;
$oldPriceplus20= $oldPrice +($oldPrice*0.2);
$oldPriceminus20= $oldPrice -($oldPrice*0.2);
$newPrice = $line[2];
print( "The 'first' element is in the array\nOld price is: ".$oldPrice."\nNew price is:".$newPrice."\n");
print("Old price with +20% is:".$oldPriceplus20."\nOld price with -20% is:".$oldPriceminus20."\n");
if ($newPrice <= $oldPriceplus20 && $newPrice >= $oldPriceminus20){
echo"Take new price\n\n";
}
else{
$line[2] = $oldPrice;
echo"Take the old price.\n";
}
}
fputcsv($fp, $line, ',', ' ');
}
fclose($file);
fclose($fp);