Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以同时读取和写入csv文件吗?_Php_Magento_Csv_File Io - Fatal编程技术网

Php 我可以同时读取和写入csv文件吗?

Php 我可以同时读取和写入csv文件吗?,php,magento,csv,file-io,Php,Magento,Csv,File Io,我想在每次for-each循环中从上到下读取一个csv文件,检查是否已经存在相同的内容,并用新内容覆盖它。例如,如果产品id相同,则使用同一行中的新数据覆盖旧数据 现在,我使用fgetcsv逐行读取csv文件。是否有一种方法可以在我读取csv时写入同一行?忘记这里的实现,您正在询问检查循环中文件是否已更改的最快方法。我认为第一次校验和可能是合理的,但它可能比你想象的要长一点。 下一个选项是使用file.GetlastWriteTime。跳过循环,只需检查它是否与上次使用时相同。 呜呜。。。没

我想在每次for-each循环中从上到下读取一个csv文件,检查是否已经存在相同的内容,并用新内容覆盖它。例如,如果产品id相同,则使用同一行中的新数据覆盖旧数据


现在,我使用fgetcsv逐行读取csv文件。是否有一种方法可以在我读取csv时写入同一行?

忘记这里的实现,您正在询问检查循环中文件是否已更改的最快方法。我认为第一次校验和可能是合理的,但它可能比你想象的要长一点。

下一个选项是使用file.GetlastWriteTime。跳过循环,只需检查它是否与上次使用时相同。

呜呜。。。没有注意到您正在使用PHP。我相信这两种选择都有类似的方法

是否有方法在读取csv时写入同一行

简短回答:没有

长回答:是的,但这非常困难,通常您只需要从头到尾完全重写文件

假设您有一个包含以下内容的文件:

The quick brown fox jumped over the lazy dog.
你想把跳跃变成跳跃。容易的你可能会想,我只是换个词。您可以查找文件IO以及如何移动指针,查找单词开头的位置,并编写跳转。现在你有:

The quick brown fox jumpsd over the lazy dog.
哦,那不对。我们需要删除那个差事。怎样通过将文件中的每个字节向上移动一个字节。这是一个繁琐的操作,也是一个由于小疏忽和奇怪的角落案例而损坏数据的好方法。[1到3字节UTF字符?BOMs?]如果需要插入比原始字符长的单词,则会遇到更大的问题

想想像砖墙一样的文件。在墙的顶部添加一排新砖很容易,但是如果你想在中间多粘一块砖,你最好把整个墙拆下来重建

如果您有一组需要就地修改的数据,那么最糟糕的存储位置就是在平面文件(如CSV或XML文件)中。按照达贡的建议,把数据放在它所属的数据库中


没有数据库服务器吗?查看。

尖叫,使用db not PLAT csv文件,我不要求检查循环中是否更改了文件。我想在现有的csv文件中运行一个检查。嗨,我接受了你的建议,将我需要的所有数据加载到mysql数据库表中。如何检查表中是否存在相同的项,如果存在,请重写该行。如果不是,是否附加到表?非常感谢。