我需要将一个字符串反序列化为一个数组。这是需要在php中对unosiative数组进行反序列化的字符串。
a:1:{i:0;s:158:"a:6:{s:5:"rowid";s:32:"94ca9ee0c4e3184b50e89e82f80332fb";s:2:"id";
s:2:"68";s:3:"qty";s:1:"1";s:5:"price";
s:2:"20";s:4:"name";
s:5:"Bread";s:8:"subtotal";i:20;}";
}
答案 0 :(得分:3)
看起来这是双重序列化的。它扩展为具有单个元素的数组,该元素是序列化的关联数组。所以你需要这样做:
$temp = unserialize($data);
$result = unserialize($temp[0]);
var_dump($result);
结果:
array(6) {
["rowid"]=>
string(32) "94ca9ee0c4e3184b50e89e82f80332fb"
["id"]=>
string(2) "68"
["qty"]=>
string(1) "1"
["price"]=>
string(2) "20"
["name"]=>
string(5) "Bread"
["subtotal"]=>
int(20)
}
如果顶级序列化数组中可能有多个元素,请使用array_map
反序列化所有元素:
$result = array_map('unserialize', $temp);
$result
现在将成为一个二维数组。
我不确定您为何以这种方式存储数据。为什么不一次序列化原始的二维数组,而不是嵌套它们?