我不确定我在这里做错了什么。我有一个存储和数组的txt文件:
Array
(
[0] => Array
(
[sku] => 123123
)
)
当我通过php读取文件并循环遍历它时,它给了我这个错误:
Invalid argument supplied for foreach()
代码:
$items = $file->getContents();
foreach($items as $item){
}
备用代码(序列化和反序列化):
$items = $file->getContents();
$itemsA = serialize($items);
$itemsB = unserialize($itemsA);
foreach($itemsB as $item){
}
Produces this error as well: Invalid argument supplied for foreach()
答案 0 :(得分:1)
你可以序列化然后反序列化或json_encode然后json_decode
如果您的文件不是动态的(也就是配置文件),请检查此answer
答案 1 :(得分:0)
这是一个var_dumped数组。要将数组存储在文件中,您可以将其序列化然后编写它,当您从文件中读取它时,然后将其反序列化以使数组返回。
答案 2 :(得分:0)
阵 ( [0] =>排列 ( [sku] => 123123 ) )
$items = $file->getContents();
$items = str_replace(array('> Array','[',']'),array('> new Array',"'","'"),$items );
file_put_content("TMPFILENAME","<\?PHP\n return new $items;");
$items = include "TMPFILENAME";
替换&#34; &#39;如果需要的话 如果你需要数字键,请先做一些:
$items = preg_replace('#(?:\[([0-9]+)\])+#','$1',$items );
还脏! Convert var_dump of array back to array variable
\?至 ? ! WYSIWYG ...
答案 3 :(得分:0)
由于缺乏代码,我会做一些假设。
添加所需代码后会更改这些内容。
没有关于如何创建该文件的信息。
输出看起来像来自var_dump()
或print_r()
我不完全确定使用了哪种。
如果使用了这些,请忘记文件。
如果要恢复此文件,则必须手动将其转换为实际工作代码(通过在数组中的键名称周围添加引号),将return
(后面有空格)添加到文件中{ {1}}它。
要重新执行该文件,并在下次编写时,您有以下几种方法:
使用功能include
:
这很容易使用!
只需传递变量就可以了
这是一个例子:
serialize()
然后使用$text=serialize($variable);
提取数据
像这样:
unserialize()
使用$data=unserialize($text);
保存数据
它的工作方式相同:
json_encode()
使用$text=json_encode($data);
获取数据,如下所示:
json_decode()
请注意,JSON数据可以用于许多其他语言,包括Javascript!
此外,此方法比$data=json_decode($text);
快。
使用serialize()
在字符串中获取有效的PHP代码
像这样:
var_export()
$php=var_export($data);
//write the file like this, prepending '<?php return ' to it:
会写出如下内容:
file_put_contents('file.php','<?php return '.$php);
要阅读该文件,只需使用return Array(1,2,3); //example code.
或include
:
require
是的,include可以接收数组数据!
到目前为止,这是最快的方法!