###実現したいこと
WordPress初心者です。ユーザーのカスタムフィールドを更新するにあたって、その法則に悩まされています。
ユーザーのカスタムフィールド(user_meta「'c_user'」)に次のような「氏名と年齢」の配列を入れたいと思っているのですが、➀と➁の問題が発生し実現できない状況です。
php
1array ( 2 array( 3 'name' => 'a', 4 'age' => '26' 5 ), 6 array( 7 'name' => 'b', 8 'age' => '21' 9 ), 10); 11
###発生している問題
2点あります。
➀1回目の追加で空の配列が存在すること。
➁2回目の追加で配列の形式が変わること。
これらの問題が生じる処理をご説明させて頂きます。
###試したこと
問題が生じる処理はこうです。
php
1$id = 1; 2 3// 現状のデータを取得し、 4$c_user = get_user_meta( $id, 'c_user' ); 5 6// 追加するデータを作り、 7$add = array ( 8 'name' => 'c', 9 'age' => '19' 10); 11 12// 現状のデータに追加し、 13$c_user[] = $add; 14 15// 情報を更新する 16$new = serialize($c_user); 17update_user_meta( $id, 'c_user', $new );
上の処理によってまず1つ目の問題➀が生じます。
つまり、まだデータが空の状況で処理すると、次のように空の配列が存在するということです。
php
1array(2) { 2 [0]=> 3 string(0) "" 4 [1]=> 5 array(2) { 6 ["name"]=> 7 string(1) 'c' 8 ["age"]=> 9 string(2) "19" 10 } 11} 12
さらに上に続いて同じ処理を行うと、今度は2つ目の問題➁が生じます。
つまり、配列の形式が変わって次のようになるということです。
PHP
1array(2) { 2 [0]=> 3 string(65) "a:2:{i:0;s:0:"";i:1;a:2:{s:4:"name";s:1:"c";s:3:"age";s:2:"19";}}" 4 [1]=> 5 array(2) { 6 ["name"]=> 7 string(1) 'c' 8 ["age"]=> 9 string(2) "19" 10 } 11} 12
正直この仕様に戸惑っており訳がわからないのですが、如何様にして冒頭のような配列が実現されるのでしょうか?
原因と正しいソースコートについて教えていただけましたら幸甚に存じます。
何卒、宜しくお願い申し上げます。
###バージョン
wordPress 5.0.3
PHP 7.3.4
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/30 06:47 編集
2019/04/30 07:01
2019/04/30 07:32
2019/04/30 07:34
2019/04/30 08:13 編集
2019/04/30 08:29
2019/04/30 08:40
2019/04/30 08:52
2019/04/30 09:27