コメントごとに、そのコメント投稿者IDとコメントメタキーが入った配列を作りたいです。
###実現したいこと
現状としては、
投稿ID「7、4」についてget_claimをかけると、コメントID「28、25、16」が配列で取得できる状況でして(下記ソースコードの➃のところです)
目的としては、
このコメントID「28、25、16」のそれぞれから
・コメントの「投稿者ID」
・コメントの「メタキーstarの数」
が入った配列を作りたいと考えています。
理想の配列はこうです。
php
1array(2) { 2 ["7"]=> array(2) { // 投稿ID 3 ["28"]=> array(2) { // コメントID 4 ["author"]=> string(1) "1" // 投稿者ID 5 ["score"]=> string(1) "4" // starの数 6 } 7 ["25"]=> array(2) { // コメントID 8 ["author"]=> string(1) "1" // 投稿者ID 9 ["score"]=> string(1) "0" // starの数 10 } 11 } 12 ["4"]=> array(1) { // 投稿ID 13 ["16"]=> array(2) { // コメントID 14 ["author"]=> string(1) "2" // 投稿者ID 15 ["score"]=> string(1) "9" // starの数 16 } 17 } 18}
ご覧のように、投稿ID7と4について、そのコメントごとに「投稿者ID」「メタキーstarの数」が入った配列です。
###発生している問題
配列が大量に重複して生成されてしまいます。
###該当のソースコード
php
1/* ➀: 投稿IDを配列で取得 */ 2$product_array = array( 7, 4 ); 3 4/* ➁: 投稿IDについての処理 */ 5foreach ( $product_array as $product_id ) { 6 7 /* ➂: 投稿IDのキーを持つ配列を作っておく */ 8 $all_claim_array = array( 9 $product_id=>array() 10 ); 11 12 /* ➃: 投稿IDから、その投稿に対してされたコメントIDを配列で取得 */ 13 $claim_array = get_claim( $product_id ); //get_claimは独自に定義し正常に作動します。 14 15 /* ➄: コメントについての処理 */ 16 foreach ( $claim_array as $claim_id ) { 17 18 /* ➅: コメントのスコアを取得 */ 19 $score = get_post_meta( $claim_id, 'star', true ); 20 21 /* ➆: コメントの投稿者IDを取得 */ 22 $post = get_post( $claim_id ); 23 $claim_author_data = get_userdata( $post->post_author ); 24 $claim_author_id = $claim_author_data->ID; 25 26 /* ➇: コメントIDのキーを持つ配列を作り、投稿者IDとstarの数を入れる */ 27 $tmp[$claim_id] = [ 28 'author'=> $claim_author_id, // 投稿者ID 29 'score' => $score // starの数 30 ]; 31 array_push( $all_claim_array, $tmp ); 32 } 33} 34/* ➈: 確認 */ 35var_dump( $all_claim_array ); // なぜか重複した配列が生成されまくってしまう!
以上のソースコードについて、先述の理想の配列にするために変更すべき点について教えて頂けましたら嬉しいです。
素人のソースコードで見にくい点が多々あるかとは存じますが、何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/09 17:58