私は配列をキーに基づいてサブアレイにグループ化しようとしています。アレイをキーを使用してサブアレイにグループ化するにはどうすればよいですか?
サンプルアレイ
Array
(
[0] => Array
(
[a_id] => 1
[a_name] => A1
[b_id] => 1
[b_name] => B1
[c_id] => 1
[c_name] => C1
)
[1] => Array
(
[a_id] => 1
[a_name] => A1
[b_id] => 1
[b_name] => B1
[c_id] => 2
[c_name] => C2
)
[2] => Array
(
[a_id] => 1
[a_name] => A1
[b_id] => 2
[b_name] => B2
[c_id] => 3
[c_name] => C3
)
[3] => Array
(
[a_id] => 2
[a_name] => A2
[b_id] => 3
[b_name] => B3
[c_id] => 4
[c_name] => C4
)
)
私は、このサンプルの配列は、次の形式のJSON配列に変換する必要があります
予想される出力
[{
"a_id": 1,
"a_name": "A1",
"b_list": [{
"b_id": 1,
"b_name": "B1",
"c_list": [{
"c_id": 1,
"c_name": "C1"
}, {
"c_id": 2,
"c_name": "C2"
}]
}, {
"b_id": 2,
"b_name": "B2",
"c_list": [{
"c_id": 3,
"c_name": "C3"
}]
}]
}, {
"a_id": 2,
"a_name": "A2",
"b_list": [{
"b_id": 3,
"b_name": "B3",
"c_list": [{
"c_id": 4,
"c_name": "C4"
}]
}]
}]
私ができました以下のコードを使用してキーでグループ化します。
$array = array(
array("a_id" => "1","a_name" => "A1","b_id" => "1","b_name" => "B1","c_id" => "1","c_name" => "C1"),
array("a_id" => "1","a_name" => "A1","b_id" => "1","b_name" => "B1","c_id" => "2","c_name" => "C2"),
array("a_id" => "1","a_name" => "A1","b_id" => "2","b_name" => "B2","c_id" => "3","c_name" => "C3"),
array("a_id" => "2","a_name" => "A2","b_id" => "3","b_name" => "B3","c_id" => "4","c_name" => "C4")
);
$return = array();
foreach($array as $val) {
$return[$val["a_id"]][] = $val;
}
print_r($return);
私の実際のシナリオでは、サブアレイにグループ化することは機能しませんでした。
期待されるJSONレスポンスを得るための最適な方法や便利な機能があるかどうかを楽しみにしています。
注:ここでは一般的な使用例を検討しています。たとえば、国としてはa_list
、州としてはb_list
、都市ではc_list
です。
あなたの入力と期待される出力をできるだけ小さくすることはできますか?それで、あなたが期待する行動を理解するのが簡単です。 –
それは...むしろ面白く渦巻いています。 @TomasZubiriこれは、できるだけ小さなサンプルです。言うまでもなく、このグループには多くの詳細があります。 –
@SurabhilSergyはい、いくつかありますが、今は時間がありません。それは何らかの再帰性を意味する。数時間で何かを試してみる –