私はcakephp2.2.3にこの多次元のassoc$modules配列を持っています:
配列(
'type1' => array(
(int)0 => array(
'name' =>'name16'、
'タイプ'=>'1'、
'category' =>'categoryC'、
'ゾーン'=>'ゾーン1'
)、
(int)1 => array(
'name' =>'name17'、
'タイプ'=>'1'、
'category' =>'categoryB'、
'ゾーン'=>'ゾーン1'
)、
(int)2 => array(
'name' =>'name18'、
'タイプ'=>'1'、
'category' =>'categoryA'、
'zone' =>'zone3'
)、
(int)3 => array(
'name' =>'name19'、
'タイプ'=>'1'、
'category' =>'categoryC'、
'zone' =>'zone3'
)、
(int)4 => array(
'name' =>'name22'、
'タイプ'=>'1'、
'category' =>'categoryA'、
'ゾーン'=>'ゾーン2'
)。
)、
'type2' => array(
(int)0 => array(
'name' =>'name1'、
'タイプ'=>'2'、
'category' =>'categoryB'、
'ゾーン'=>'ゾーン2'
)、
(int)1 => array(
'name' =>'name2'、
'タイプ'=>'2'、
'category' =>'categoryB'、
'ゾーン'=>'ゾーン2'
)、
(int)2 => array(
'name' =>'name3'、
'タイプ'=>'2'、
'category' =>'categoryA'、
'ゾーン'=>'ゾーン1'
)、
(int)3 => array(
'name' =>'name4'、
'タイプ'=>'2'、
'category' =>'categoryC'、
'zone' =>'zone3'
)、
(int)4 => array(
'name' =>'name5'、
'タイプ'=>'2'、
'category' =>'categoryA'、
'zone' =>'zone3'
)。
)。
)。
そして私はそれを次のように再配置したい
配列(
'zone1' => array(
'type1' => array(
(int)0 => array(
'name' =>'name17'、
'タイプ'=>'1'、
'category' =>'categoryB'
)、
(int)1 => array(
'name' =>'name16'、
'タイプ'=>'1'、
'category' =>'categoryC'
)。
)、
'type2' => array(
(int)0 => array(
'name' =>'name3'、
'タイプ'=>'2'、
'category' =>'categoryA'
)。
)。
)、
'zone2' => array(
'type1' => array(
(int)0 => array(
'name' =>'name22'、
'タイプ'=>'1'、
'category' =>'categoryA'
)。
)、
'type2' => array(
(int)0 => array(
'name' =>'name1'、
'タイプ'=>'2'、
'category' =>'categoryB'
)、
(int)1 => array(
'name' =>'name2'、
'タイプ'=>'2'、
'category' =>'categoryB'
)。
)。
)、
'zone3' => array(
'type1' => array(
(int)0 => array(
'name' =>'name18'、
'タイプ'=>'1'、
'category' =>'categoryA'
)、
(int)0 => array(
'name' =>'name19'、
'タイプ'=>'1'、
'category' =>'categoryC'
)。
)、
'type2' => array(
(int)0 => array(
'name' =>'name5'、
'タイプ'=>'2'、
'category' =>'categoryA'
)、
(int)1 => array(
'name' =>'name4'、
'タイプ'=>'2'、
'category' =>'categoryC'
)。
)。
)。
)。
ここで、「category」は各親の「type」内でアルファベット順にソートする必要があります
で試してみました
$ modules = Hash :: combine($ modules、'{n}'、'{n}。{n}'、'{s}。{s}。{n}.zone');
しかし、成功しませんでした。必要に応じてHash::combineを使用していないと思います...
ありがとう、Marius