私は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