我从wordpress中的post meta字段返回一个序列化数组,称为groups。
以下是发布元字段的方式。
a:2:{i:0;s:1:"1";i:1;s:1:"2";}
我如何循环使用这个并运行if语句,即
$mydata = unserialize($meta['groups']);
print_r($mydata);
对于我来说,unserialzed并不是我从print_r得到的输出
a:2:{i:0;s:1:"1";i:1;s:1:"2";}
与上述相同。
使用序列化和非序列化数组的任何帮助从未使用过。
答案 0 :(得分:1)
可行magic_quotes
有效。使用stripslashes
:
$mydata = unserialize(stripslashes($meta['groups']));
如果你想从整个GPC-Array中去除斜线,请使用它(Credits转到PHP.net上的this评论):
if (get_magic_quotes_gpc()) {
$strip_slashes_deep = function ($value) use (&$strip_slashes_deep) {
return is_array($value) ? array_map($strip_slashes_deep, $value) : stripslashes($value);
};
$_GET = array_map($strip_slashes_deep, $_GET);
$_POST = array_map($strip_slashes_deep, $_POST);
$_COOKIE = array_map($strip_slashes_deep, $_COOKIE);
}
答案 1 :(得分:0)
这是我使用命令行PHP获得的:
php > $x = unserialize('a:2:{i:0;s:1:"1";i:1;s:1:"2";}');
php > print_r($x);
Array
(
[0] => 1
[1] => 2
)
似乎$meta['groups']
不包含序列化字符串。
答案 2 :(得分:0)
print_r(unserialize('a:2:{i:0;s:1:"1";i:1;s:1:"2";}'));
将打印
Array
(
[0] => 1
[1] => 2
)
反序列化工作正常。你怎么知道$meta['groups']
是否包含你想要的东西?