如何取消两个序列化数组的序列化


how to unserialize two serialized arrays

我在数据库中存储了多个序列化数组。。lke这个

a:2:{s:2:"B5";s:5:"user1";s:2:"B4";s:5:"user1";}a:1:{s:2:"A3";s:5:"user1";}a:1:{s:2:"A4";s:5:"user1";}

但当我用取消数组的序列化时

    $booked_seats = $r1['user_seats'];
    $b = unserialize($booked_seats);
    var_dump($b);

它只显示了第一个像这样的未序列化数组的结果

   array
  'B5' => string 'user1' (length=5)
  'B4' => string 'user1' (length=5)

但是我希望我所有的数组都是非序列化的。。请。。。支持我应该用什么??

谢谢。

我们可以用}分解串联的序列化字符串吗?

$r1['user_seats'] = 'a:2:{s:2:"B5";s:5:"user1";s:2:"B4";s:5:"user1";}a:1:{s:2:"A3";s:5:"user1";}a:1:{s:2:"A4";s:5:"user1";}';
$user_seats = explode('}', $r1['user_seats']);
foreach ($user_seats as $user_seat) {
    if (strlen($user_seat)) {
        $user_seat .= '}';
        $booked_seat = $user_seat;
        $b = unserialize($booked_seat);
        var_dump($b);
    }
}
$serial = 'a:2:{s:2:"B5";s:5:"user1";s:2:"B4";s:5:"user1";}a:1:{s:2:"A3";s:5:"user1";}a:1:{s:2:"A4";s:5:"user1";}';
$serial=str_replace('{', '|', $serial);
$serial=str_replace('}', '|', $serial);
$p = explode('|', $serial);
echo '<pre>';
print_r($p);
$total = count($p);
$arrr=array();
for($i=0; $i<=$total; $i++){
    if(strlen($p[$i])>1){
        $arrr[$i] = $p[$i] . "{" . $p[$i+ 1]  . "}";
        $i++;
    }
}
foreach($arrr as $key => $value){
    var_dump(unserialize($value));
}

结果:

array(2) {
  ["B5"]=>
  string(5) "user1"
  ["B4"]=>
  string(5) "user1"
}
array(1) {
  ["A3"]=>
  string(5) "user1"
}
array(1) {
  ["A4"]=>
  string(5) "user1"
}