我需要将字符串反序列化为数组。这是需要在 php 中反序列化为关联数组的字符串。
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;}";
}
我需要将字符串反序列化为数组。这是需要在 php 中反序列化为关联数组的字符串。
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;}";
}
看起来这已经被双重序列化了。它扩展为具有单个元素的数组,并且该元素是一个序列化的关联数组。所以你需要这样做:
$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
现在将是一个二维数组。
我不确定您为什么以这种方式存储数据。为什么不一次序列化原始的二维数组,而不是嵌套它们呢?