How create an array from the output of an array printed with print_r?的重复 这也有一个很好的代码示例来解决这个问题
我需要撤消一个输出为print_r($data,true)
的错误日志
示例数据如下所示:
Array
(
[subject] => this is the subject
[body] => <p>Dear user,</p><p>this is the body of the email</p>
[from_id] => 0
[from_email] => admin@karakas.org
[to] => Array
(
[0] => Array
(
[id] => 0
[email] => 64909
)
)
[send_to_inbox] => 1
)
答案 0 :(得分:6)
在PHP手册中,评论中有print_r_reverse()
个函数:
http://php.net/manual/en/function.print-r.php
但是,如果使用var_export()
生成日志,var_export()
可以替代。这样,您只需要eval()
来检索导出的数组。
答案 1 :(得分:3)
print_r()
的输出不是为解析而设计的;它被设计为由开发人员读取以进行调试。你不应该试图解析它。
如果你真的必须解析这种性质的PHP数据转储,那么var_export()
函数就是针对这种情况的。但是,我也不建议解析这个问题 - 它仍然不太适合你。
如果您打算存储数组结构的字符串表示形式,然后再解析它,那么最好使用serialize()
/ unserialize()
函数或{{1} } / json_encode()
函数。
这两种方法都将为您提供更可靠,更易于解析的数据转储格式。在这两者中,我每次都推荐json_decode()
,因为它不仅易于使用,而且还支持其他语言,易于手动阅读和紧凑。
简而言之,不要解析json_encode()
输出;请改用print_r()
/ json_encode()
。