2013-02-26 42 views
2

我已經存儲了超過一個序列化數組中database..lke這個如何反序列2個序列化數組

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 ......支持......我應該使用什麼?

謝謝。

+1

您將需要一個正則表達式從garbaged串聯恢復。下一次,不要這樣保存。 – mario 2013-02-26 05:22:51

+0

只有在使用print_r($ b) – Dev 2013-02-26 05:24:50

回答

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); 
    } 
} 
+0

謝謝..第一個數組的結果仍然是相同的..安東尼,我得到了我想要的...再次感謝.... – Dev 2013-02-26 05:46:16

+0

這不會工作,如果'user1'字符串包含' USER1}'。 – 2013-02-26 05:50:48

+0

如果它是多維數組 – olekeh 2017-11-26 12:56:07

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" 
} 
+0

,那麼這將不起作用,如果'user1'字符串包含'user1}',這將不起作用。 – 2013-02-26 05:52:18

+0

@CodeProtocol你能否提供這個例子來反序列化兩個序列化數組用於檢查目的 – Vineet1982 2013-02-26 05:56:21

+0

'a:2:{s:8:「myentry1」; s:16:「blabla} contains}」; s:5:「next1」; s 8: 「BLA} BLA}」;}一個:2:{S:8: 「myentry2」; S:16: 「foofoo}包含}」; S:5: 「NEXT2」; S:8:「富} bla}「;}'用你的方法試試這個。我連載這個數組和連接'$ data1 = array('myentry1'=>'blabla} contains}','next1'=>'bla} bla}'); $ data2 = array('myentry2'=>'foofoo} contains}','next2'=>'foo} bla}');' – 2013-02-26 06:04:41