並べ替えがまったくない町がたくさんあります。州である[category][3]、地域である[category] [0]で並べ替えて、グループ化された各州とその地域、およびその下の町を表示したいと思います。したがって、次の配列:
Array
(
[0] => Array
(
[name] => Name One
[id] => 1
[link] => http://mylink1.com
[category] => Array
(
[0] => Region 1
[1] => Town 7
[2] => Country
[3] => Province 2
)
)
[1] => Array
(
[name] => Name Two
[id] => 2
[link] => http://mylink2.com
[category] => Array
(
[0] => Region 1
[1] => Town
[2] => Country
[3] => Province 3
)
)
[2] => Array
(
[[name] => Name Three
[id] => 3
[link] => http://mylink3.com
[category] => Array
(
[0] => Region 1
[1] => Town 5
[2] => Country
[3] => Province 2
)
)
[6] => Array
(
[name] => Name Four
[id] => 4
[link] => http://mylink4.com
[category] => Array
(
[0] => Region 1
[1] => Town 1
[2] => Country
[3] => Province 1
)
)
)
...このようになってしまうはずです:
Country (all the same)
Province 1
- Region 1
- - Town 1 name, id, link
Province 2
- Region 1
- - Town 5 name, id, link
- - Town 7 name, id, link
Province 3
- Region 1
- - Town 1 name, id, link
州は主要なグループ化要素であり、次に地域、町で特定の順序で並べ替えられますが、アルファベット順に意味があると思います。
私はこの参照を使用して配列をカテゴリ別に並べ替えることができました:多次元配列を値で並べ替えますが、名前を使用してループ内で特に州を参照せずに、これ以上並べ替える方法を理解することはできません。すなわち
/// shortened version..
foreach($array as $key=>$value)...
if($value == "Province 1") : do something here with these matches
... etc
どんな助けでもいただければ幸いです。