0

我需要将字符串反序列化为数组。这是需要在 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;}";

}

4

1 回答 1

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现在将是一个二维数组。

我不确定您为什么以这种方式存储数据。为什么不一次序列化原始的二维数组,而不是嵌套它们呢?

于 2013-09-02T09:29:38.107 回答