Php 编辑整个列的CSV字段值
我有一个CSV,每天晚上从批发商那里下载,有更新的价格 我需要做的是编辑价格列(第二列),并将当前值乘以1.3(30%) 下面是我读取提供的CSV并只获取所需列的代码,但是我似乎不知道如何编辑价格列Php 编辑整个列的CSV字段值,php,csv,fgetcsv,fputcsv,Php,Csv,Fgetcsv,Fputcsv,我有一个CSV,每天晚上从批发商那里下载,有更新的价格 我需要做的是编辑价格列(第二列),并将当前值乘以1.3(30%) 下面是我读取提供的CSV并只获取所需列的代码,但是我似乎不知道如何编辑价格列 <?php // open the csv file in write mode $fp = fopen('var/import/tb_prices.csv', 'w'); // read csv file if (($handle = fopen("var/import/Cbl_4036_
<?php
// open the csv file in write mode
$fp = fopen('var/import/tb_prices.csv', 'w');
// read csv file
if (($handle = fopen("var/import/Cbl_4036_2408.csv", "r")) !== FALSE) {
$targetColumns = array(1, 2, 3); // get data from the 1st, 4th and 15th column
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$targetData = array(); // array that hold target data
foreach($targetColumns as $column){ // loop throught the targeted columns array
if($column[2]){
$data[$column] = $data[0] * 1.3;
}
$targetData[] = $data[$column]; // get the data from the column
}
# Populate the multidimensional array.
$csvarray[$nn] = $targetData; // add target data to csvarray
// write csv file
fputcsv($fp, $targetData);
}
fclose($handle);
fclose($fp);
echo "CSV File Written Successfully!";
}
?>
请有人给我指出正确的方向,解释一下你是如何计算出这个函数的,这样我就可以同时学习了 您将价格列乘以-$data[0]*1.3。 这可能是错误的
其他意见: 如果您在处理此数据(csv)的生命周期中只执行一次,请尝试仅使用mysql本身来解决此问题。创建与数据库类似的表,将.csv数据导入该mysql表。然后,SQL可以按照您的需要进行操作 无环;无需编码,无需文件读/写,并可精确控制更新操作。您只需要知道分隔符(行分隔符,例如。\r\n、列分隔符(例如逗号、制表符或分号),以及是否使用双引号/单引号进行数据编码) 修改数据后,可以再次将其导出回csv
如果要处理.csv文件本身,请在一个连接(只读模式)中打开它,然后写入另一个文件-保存原始数据。您说包含价格的列是第二列,但随后将该索引与零一起使用。不管怎么说,整件事都会容易些
$handle = fopen("test.csv", "r");
if ( $handle !== FALSE) {
$out = "";
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$data[1] = ((float)$data[1] * 1.3);
$out .= implode(";",$data) . "\n";
}
fclose($handle);
file_put_contents("test2.csv", $out);
}
此代码打开一个以逗号作为分隔符的csv文件。
然后读取每一行,并将每一行的第二个冒号(索引1)乘以1.3
这条线
$out .= implode(";",$data) . "\n";
为新的csb文件生成一行。请参阅Officele文档中的内爆
在我关闭与文件的连接之后。和“当你可以一次性编写第二个文件时,连接两个文件是无用的”。对于小文件来说这是正确的您能从CSV文件中添加一些示例数据吗?