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