###実現したいこと
配列の変換ができなくて困っています。
$init_arr を $reslt_arr へと変換したいです。
###該当のソースコード
変換前はこちらです。
php
1$init_arr = [ 2 [ 'item'=>'A', 'title'=>'apple' ], 3 [ 'item'=>'B', 'title'=>'banana' ], 4 [ 'item'=>'A', 'title'=>'apricot' ] 5];
変換後はこうなり、item に応じた area_name をつけて、別々の配列に分ける感じを目指しています。
php
1$reslt_arr = [ 2 [ 3 'area_name' => 'area_A', 4 'info_arr' => [ 5 [ 'item'=>'A', 'title'=>'apple', 'area_name'=>'area_A' ], 6 [ 'item'=>'A', 'title'=>'apricot', 'area_name'=>'area_A' ], 7 ] 8 ], 9 [ 10 'area_name' => 'area_B', 11 'info_arr' => [ 12 [ 'item'=>'B', 'title'=>'banana', 'area_name'=>'area_B' ], 13 ] 14 ], 15];
###試したこと
まず $init_arr に area_name はないので、
foreach でループさせ、その中で area_name を生成します。
あとはその area_name に応じて $init_arr を分けていけば $reslt_arr ができると考えたのですが、結果的に area_B が生成されず、area_A に3つとも入ってしまいました。それが下記 $interim_arr です。
$reslt_arr のように、area_A と area_B に分けたいのですが、下記ですとどこを直したらいいでしょうか。
php
1<?php 2 3$init_arr = [ 4 [ 'item'=>'A', 'title'=>'apple' ], 5 [ 'item'=>'B', 'title'=>'banana' ], 6 [ 'item'=>'A', 'title'=>'apricot' ] 7]; 8 9$i = 0; 10$info_arr = []; 11foreach ( $init_arr as $init_val ) { 12 13 $item = $init_val['item']; 14 $area_name = 'area_' . $item; 15 $title = $init_val['title']; 16 17 // もし可能ならばこれ以下の部分だけの修正で実現したいです 18 19 $info = [ 20 'area_name' => $area_name, 21 'item' => $item, 22 'title' => $title, 23 ]; 24 25 $info_arr[$i] = $info; 26 27 $interim_arr = [[ 28 'area_name' => $area_name, 29 'info_arr' => [], 30 ]]; 31 $interim_arr[0]['info_arr'] = $info_arr; 32 33 $i++; 34} 35 36var_dump( $interim_arr ); // ここで $reslt_arr と同じものを取得したいです
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/06 07:47