将文件读入字节数组(PHP)

6

我有一个文件,但现在需要将其读入一个字节数组。在Java或C++中,这很容易实现,但是我不知道如何在PHP中读取。

4个回答

10

1
我认为有一个打字错误。它应该是: $char = $data[$i]; - Arvind Bhardwaj

4
请参阅PHP手册中关于按字符访问和修改字符串的部分
用方括号指定所需字符的零基偏移量即可访问和修改字符串s中的字符,例如$str[42]。为此目的,请将字符串视为字符数组。当您想要提取或替换多个字符时,可以使用substr()substr_replace()函数。
或者,如果您希望从文件中查找和读取字节,则可以使用SplFileObject
$file = new SplFileObject('file.txt');
while (false !== ($char = $file->fgetc())) {
    echo "$char\n";
}

这不是一个字节数组,而是遍历文件句柄。SplFileInfo实现了SeekableIterator接口。

此外,还有一个函数:

  • file - 返回数组中的文件。数组的每个元素对应于文件中的一行,换行符仍然附加在每行的末尾。如果失败,则file()返回FALSE。

2

2

太多的php>

$data = file_get_contents("/tmp/some_file.txt");

最好的方法是使用for循环(不推荐使用count、sizeof、strlen或其他函数):$counter = strlen($data); for($i = 0; $i < $counter; ++$i) { $char = data[$i]; echo "字节 $i: $char\n"; }


毫无意义的微小优化。你的答案应该在回答下面拥有一个评论。 - Gordon
在所有的微小优化中,如果有的话,这个是最不毫无意义的。 - raveren
即使对于包含1到100万数字的数组,使用forcount仅需要多约0.8秒。对于1-10k,这已经只有0.002秒了。而对于更少的数字,几乎无法测量。 - Gordon
出于简单起见,我省略了这个优化。 - too much php

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接