###実現したいこと
下記の連想配列$arr
から、次の条件でランダムで取得したいです。
・name
をランダムに2件取得
・そのname
に基づいたid_arr
をランダムで2件ずつ (計4件) 取得
PHP
1 // 取得の元になる連想配列 2 $arr = [ 3 [ 4 'name' => 'apple', 5 'id_arr' => ['1','5','7','4'] 6 ], 7 [ 8 'name' => 'banana', 9 'id_arr' => ['18','56'] 10 ], 11 [ 12 'name' => 'strawberry', 13 'id_arr' => ['502','470','113'] 14 ], 15 ]; 16 17
つまり次のような結果が目的です。
PHP
1 // ランダムに取得 2 $result = [ 3 'name_arr' => ['apple','strawberry'], // ランダムに2件取得 4 'id_arr' => ['1','7','470','113'] // ランダムに2件ずつ (計4件) 取得 5 ];
###試したこと
shuffle()
を使ってみたのですが、連想配列がこう深くなると指定の方法がわからず、思うようにできません。
どなたかお助けいただける方がいらっしゃいましたら、どうぞ宜しくお願い致します。
PHP
1function my_get_arr( $post_type ){ 2 3 // 取得の元になる連想配列 4 if( $post_type=='fruits' ){ 5 $arr = [ 6 [ 7 'name' => 'apple', 8 'id_arr' => ['1','5','7','4'] 9 ], 10 [ 11 'name' => 'banana', 12 'id_arr' => ['18','56'] 13 ], 14 [ 15 'name' => 'strawberry', 16 'id_arr' => ['502','470','113'] 17 ], 18 ]; 19 } 20 21 elseif( $post_type=='drinks' ){ 22 /* 23 fluits と同じような $arr がここにも入り、 24 引数の $post_type で指定して取得する 25 */ 26 } 27 28 // ランダムに取得 29 $result = [ 30 'name_arr' => shuffle( $arr['name'] ), // ランダムに2件取得 31 'id_arr' => shuffle( $arr['id_arr'] ) // ランダムに2件ずつ (計4件) 取得 32 ]; 33 return $result; 34} 35 36$result = my_get_arr( 'fruits' ); /* とりあえず fruits の $arr から取得 */ 37var_dump( $result );
回答1件
あなたの回答
tips
プレビュー