对I / O使用“php:// memory” - 无法读回写入的值

时间:2012-11-02 22:50:34

标签: php io

所以给出了这个简单的例子:

<?php
$memory = fopen('php://memory', 'r+');

fwrite($memory, 'asdf', 4);

$value = fread($memory, 3);

var_dump($value);

我希望$value包含字符串"asd",但我得到一个空字符串。这个例子有什么需要改变的吗?我的期望不正确吗?如果$value确实应该包含"asd"可能导致这种情况发生的原因(可能是配置/ php.ini问题)?

2 个答案:

答案 0 :(得分:4)

由于在您写入数据后,流的内部指针位于索引4处,因此您需要fseek返回到流的开头:

// fwrite
fseek($memory, 0);  // same as rewind($memory);
// fread

答案 1 :(得分:0)

或者,这也可以(并且基本上相当于fseek($memory, 0);):

rewind($memory);