0

私は現在ワードプレスで作業しています。ポスト メタを保存し、以前に保存されたものを上書きすることなく後日更新できるようにする必要がありました。

私はこの簡単な解決策を思いつきました:

    $ref = get_post_meta($post->ID, 'page_ref', true );
update_post_meta($post->ID,'page_ref',array($ref,$newdata));

したがって、基本的には現在のデータを取得し、それを配列に格納してから、$newdata を配列に追加しています。これはうまく機能し、次のようにデータベースに保存されます。

a:2:{i:0;a:2:{i:0;s:0:"";i:1;s:34:"data1";}i:1;s:22:"data2";}

次に、次のように配列をループすると:

foreach ($ref as $i){

    echo $i;
}

次の結果が得られます。

Arraydata2

配列が正しく格納されているかどうかはわかりません。また、返されたデータが配列への最新のエントリのみを表示する理由もよくわかりません。

どんな助けでも大歓迎です

4

1 に答える 1

2

これはシリアル化されたデータです。シリアル化されていないメソッド(関数)を使用してこのデータを取得できます

      $serialized = 'a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"orange";}';
        var_dump(unserialize($serialized));

出力:

    Array
    (
        [0] => apple
        [1] => banana
        [2] => orange
    )

<?php echo var_dump(
unserialize('a:2:{i:0;a:2:{i:0;s:0:"";i:1;s:34:"data1";}i:1;s:22:"data2";}')
); ?>
output
bool(false) 

<?php $datas = unserialize(
'a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"orange";}'
); 

                    foreach($datas as $key => $val)
                    {
                        echo $val;
                    }



      ?>

出力

applebananaorange 
于 2013-10-21T13:53:00.530 に答える