2012-02-04 89 views
0

我從wordpress中的一個帖子meta域返回一個序列化數組,稱爲組。反序列化數組

這裏是它看起來如何發佈元字段。

a:2:{i:0;s:1:"1";i:1;s:1:"2";} 

我怎樣才能循環槽這一點,並運行一個if語句即

$mydata = unserialize($meta['groups']); 

print_r($mydata); 

的unserialzed心不是爲我工作的輸出中我從print_r的獲得低於

a:2:{i:0;s:1:"1";i:1;s:1:"2";} 

這是同上。

任何關於使用串行化和非串行化數組的幫助都沒有用過。

+0

它正在工作正常看這個http://codepad.org/v7dWWpPn – 2012-02-04 12:59:36

+0

那不是你真正的代碼或你真正的輸入數據。 – mario 2012-02-04 13:00:06

回答

0

這是我獲得的使用命令行PHP:

php > $x = unserialize('a:2:{i:0;s:1:"1";i:1;s:1:"2";}'); 
php > print_r($x); 
Array 
(
    [0] => 1 
    [1] => 2 
) 

看來,$meta['groups']不包含序列化的字符串。

1

顯然magic_quotes已激活。剝去由它生成的斜線與stripslashes

$mydata = unserialize(stripslashes($meta['groups'])); 

如果你想從整體GPC陣剝奪斜線使用這個(現金去上PHP.net this評論):

if (get_magic_quotes_gpc()) { 
     $strip_slashes_deep = function ($value) use (&$strip_slashes_deep) { 
      return is_array($value) ? array_map($strip_slashes_deep, $value) : stripslashes($value); 
     }; 
     $_GET = array_map($strip_slashes_deep, $_GET); 
     $_POST = array_map($strip_slashes_deep, $_POST); 
     $_COOKIE = array_map($strip_slashes_deep, $_COOKIE); 
    } 
+0

請注意'array_map'不是遞歸的。 'array_walk_recursive'可能會更好。 – kba 2012-02-04 13:04:40

+0

@KristianAntonsen請注意,我將它映射到一個遞歸函數。 – TimWolla 2012-02-04 13:07:09

+0

我看起來有點太快了。你是絕對正確的。 – kba 2012-02-04 13:10:01

0
print_r(unserialize('a:2:{i:0;s:1:"1";i:1;s:1:"2";}')); 

將打印

Array 
(
    [0] => 1 
    [1] => 2 
) 

的反序列化工作得很好。你怎麼知道$meta['groups']是否包含你想要的?