2012-02-04 12 views
0

グループと呼ばれるワードプレスのポストメタフィールドからシリアル化配列を返します。配列のシリアル化を解除する

ここにメタフィールドを投稿する方法を示します。

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

どうすればループトラフこれと文はすなわち

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

print_r($mydata); 

私のために私がしますprint_rから取得ouputを作業unserialzedイマイチである

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

を下回っている場合に実行同上。

これまで使用されていなかったシリアライズされた配列とシリアライズされていない配列を扱う際の助けとなりました。ここで

+0

これはよく見ています。http://codepad.org/v7dWWpPn –

+0

実際のコードや実際の入力データではありません。 – mario

答えて

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'])); 

を使用すると、この(クレジットはPHP.netにthisコメントに行く)を使用し、全体GPC-配列からスラッシュを削除したい場合:

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

+0

@ KristianAntonsen私はそれを再帰関数にマップすることに注意してください。 – TimWolla

+0

私はちょっと早すぎました。あなたは絶対に正しいです。 – kba

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

はアンシリアライズだけで正常に動作

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

を印刷します。 $meta['groups']にあなたが望むものが含まれているかどうかをどのように知っていますか?

関連する問題