###発生してい問題
配列の中にシリアライズされた文字列が入ってしまいます。
###前提
まずmeta_test
というカスタムフィールドを管理画面から見てみるとこの↓値があります。
a:2:{i:0;s:0:"";i:1;s:1:"1";}
アンシリアライズするとこう↓です。
array(2) { [0]=> string(0) "" [1]=> string(1) "1" }
###質問
上はともかく、次のコードで2
を追加してみると、配列の形式が揃いません。
PHP
1$uid= get_current_user_id(); 2$meta_test = get_user_meta( $uid, 'meta_test' ); 3$meta_test[] = '2'; 4$meta_result = serialize($meta_test); 5update_user_meta( $uid, 'meta_test', $meta_result ); 6
つまり、管理画面に入る値はこう↓なります。
a:2:{i:0;s:29:"a:2:{i:0;s:0:"";i:1;s:1:"1";}";i:1;s:1:"2";}
アンシリアライズするとこう↓なっていて、配列の形式が揃っていないことがわかります。
array(2) { [0]=> string(29) "a:2:{i:0;s:0:"";i:1;s:1:"1";}" [1]=> string(1) "2" }
目的はこう↓なのですが、
array(3) { [0]=> string(0) "" [1]=> string(1) "1" [2]=> string(1) "2" }
なぜ目的のようにならず、[0]の位置にシリアライズされた文字列が入ってしまうのでしょうか?
そして、上述の2
を追加するためのコードのどこを書き直せば目的のような配列が作れますか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/05 03:45