2

データベースに複数のシリアル化された配列を保存しました..lkethis

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)

しかし、すべての配列をunserialize..pls ... support ....何を使用すればよいですか?

ありがとう。

4

2 に答える 2

1

連結されたシリアル化された文字列をで分解できます}か?

$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);
    }
}
于 2013-02-26T05:38:48.293 に答える
0
$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"
}
于 2013-02-26T05:50:56.963 に答える