お世話になります。PHPである値を配列へと変換したいと思っています。
文末の質問の経緯にあるように、できればWordpressにお詳しい方にお尋ねできましたら幸いです。
どうぞ宜しくお願い致します。
###実現したいこと
次のように値を変換したいです。
【現状の値】[{"age":20,"name":"太郎"}]
【目的の値】[["age"=>20,"name"=>"太郎"]]
###試したこと
そもそも【現状の値】がどのような形式かわからず、めっちゃめちゃ調べて、オブジェクト❓なるものではないかと思いました。
そこでオブジェクトを配列に変換すべく下記object_to_array()
を通したのですが、【現状の値】に変化はなく、質問させて頂きました。
php
1function object_to_array($mixed){ 2 if(is_object($mixed)){ 3 $mixed=(array)$mixed; 4 } 5 6 if(is_array($mixed)){ 7 $new=array(); 8 foreach($mixed as $key=>$val){ 9 $key=preg_replace("/^\0(.*)\0/","",$key); 10 $new[$key]=object_to_array($val); 11 } 12 }else{ 13 $new=$mixed; 14 } 15 16 return $new; 17} 18 19$obj = '[{"age":20,"name":"太郎"}]'; // 【現状の値】を関数にかける 20var_dump( object_to_array($obj) ); // 【現状の値】のまま変化なし 21
###質問の経緯
なお【現状の値】は、Wordpressのprofile_update
のフック内で、次のようにerror_log()
で確認される$test
の値になります。
ここでupdate_user_meta()
に【目的の値】を送信したいので、$test
の変換方法を質問させて頂いた。というのが質問の経緯になります。
php
1add_action( 'profile_update', 'save_profile_fields' ); 2function save_profile_fields( $user_id ) { 3 4 $cf_key_arr = ['user_meta_test']; 5 foreach( $cf_key_arr as $cf_key ){ 6 7 $init = json_encode( $_POST[$cf_key], JSON_UNESCAPED_UNICODE ); 8 error_log( '$_POST[$cf_key] - $init :' . json_encode( $init, JSON_UNESCAPED_UNICODE ) ); 9 10 $test = stripslashes( $_POST[$cf_key] ); 11 error_log( '$_POST[$cf_key] - $test :' . $test ); 12 13 /* 14 error_logの結果 15 $_POST[$cf_key] - $init :"\"[{\\\\"age\\\\":20,\\\\"name\\\\":\\\\"太郎\\\\"}]\"" 16 $_POST[$cf_key] - $test :[{"age":20,"name":"太郎"}] 17 */ 18 19 // ここで【目的の値】を送信したいので、上の $test を変換する方法を質問させて頂きました 20 update_user_meta( $user_id, $cf_key, 【目的の値】 ); 21 } 22}
回答1件
あなたの回答
tips
プレビュー