所以给出了这个简单的例子:
<?php
$memory = fopen('php://memory', 'r+');
fwrite($memory, 'asdf', 4);
$value = fread($memory, 3);
var_dump($value);
我希望$value
包含字符串"asd"
,但我得到一个空字符串。这个例子有什么需要改变的吗?我的期望不正确吗?如果$value
确实应该包含"asd"
可能导致这种情况发生的原因(可能是配置/ php.ini问题)?
答案 0 :(得分:4)
由于在您写入数据后,流的内部指针位于索引4处,因此您需要fseek
返回到流的开头:
// fwrite
fseek($memory, 0); // same as rewind($memory);
// fread
答案 1 :(得分:0)
或者,这也可以(并且基本上相当于fseek($memory, 0);
):
rewind($memory);