Để trả lời câu hỏi chung của bạn, có bạn có thể coi biến là luồng tệp.
http://www.php.net/manual/en/function.stream-context-create.php
Sau đây là một sao chép và dán từ một vài ý kiến khác nhau về hướng dẫn PHP (vì vậy tôi không thể xác minh cho cách sản xuất sẵn sàng nó là):
<?php
class VariableStream {
private $position;
private $varname;
public function stream_open($path, $mode, $options, &$opened_path) {
$url = parse_url($path);
$this->varname = $url["host"];
$this->position = 0;
return true;
}
public function stream_read($count) {
$p=&$this->position;
$ret = substr($GLOBALS[$this->varname], $p, $count);
$p += strlen($ret);
return $ret;
}
public function stream_write($data){
$v=&$GLOBALS[$this->varname];
$l=strlen($data);
$p=&$this->position;
$v = substr($v, 0, $p) . $data . substr($v, $p += $l);
return $l;
}
public function stream_tell() {
return $this->position;
}
public function stream_eof() {
return $this->position >= strlen($GLOBALS[$this->varname]);
}
public function stream_seek($offset, $whence) {
$l=strlen(&$GLOBALS[$this->varname]);
$p=&$this->position;
switch ($whence) {
case SEEK_SET: $newPos = $offset; break;
case SEEK_CUR: $newPos = $p + $offset; break;
case SEEK_END: $newPos = $l + $offset; break;
default: return false;
}
$ret = ($newPos >=0 && $newPos <=$l);
if ($ret) $p=$newPos;
return $ret;
}
}
stream_wrapper_register("var", "VariableStream");
$csv = "foo,bar\ntest,1,2,3\n";
$row = 1;
if (($handle = fopen("var://csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
Tất nhiên, đối với bạn ví dụ cụ thể, có các phương thức luồng đơn giản hơn có thể được sử dụng.
Tôi sẽ upvote này hai lần nếu có thể - bạn luôn luôn có vẻ có chỗ trên câu trả lời. Tôi cần phải đọc ghi chú người dùng thường xuyên hơn. – Erik
Cảm ơn :-) ;;; Những người sử dụng ghi chú khá thường xuyên mang lại một số thông tin thú vị :-) * (Vâng, nếu một trong những sử dụng có một vấn đề, rất có thể là ai đó đã có cùng một vấn đề trước ^^) * –
Điều thú vị cần lưu ý, sau khi đọc một số , bạn chỉ có thể sử dụng 'php: // memory' - lợi thế duy nhất cho' php: // temp' là sau khi tệp vượt quá kích thước được chỉ định, nó sẽ ghi vào đĩa; nếu bạn ở dưới kích thước tệp đó, nó sẽ nằm hoàn toàn trong bộ nhớ. – Erik