【发布时间】:2017-09-14 01:31:37
【问题描述】:
我有一个很长的文本文件(300 000 个字符),其中的数据用逗号分隔。
aaa,bbb,ccc,ddd,eee,ffff,gg,hhhhh,ii,j,kkkkkkkkkkkkk,l,mm
我想将数据填充到一个字符串中,但要按部分填充。例如,前 100 条数据,然后是下一条。请注意,每条数据的长度是不可预测的。
有没有快速的方法来做到这一点?我想将数据部分填充到字符串中,因为我不想一次使用太多内存。有点像一个循环:
for ($counter = 0; $counter < $somenumber; $counter++) {
// (1) extract counter-th 100 pieces of data to string
// (2) explode string with , as delimiter so I can obtain an array
// (3) do something to this array
}
我可以使用 file_get_contents 吗?或者我可以使用什么?
【问题讨论】:
-
你可以试试explode()link我真的不知道它是怎么处理的,但是你可以得到一个字符串块数组并使用它们
-
许多人忽略了问题的关键,即“请注意,每条数据的长度变化不可预测”。并且必须“分部分”加载字符串。问题:file_get_contents 需要知道第 100 个条目的结束位置 - file_get_contents 的第 4 个参数需要字符号。但是如何在不使用 strpos 的情况下获得该字符号(因为这会破坏目的,因为必须先加载整个字符串才能做到这一点)
-
300k 个字符不是“非常长”的文件。但是,它足够长,我建议使用读取循环而不是一次将整个内容读入内存。
标签: php arrays string file iostream