Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在cakephp 2.2中重新排列多维数组_Php_Arrays_Cakephp_Multidimensional Array - Fatal编程技术网

在cakephp 2.2中重新排列多维数组

在cakephp 2.2中重新排列多维数组,php,arrays,cakephp,multidimensional-array,Php,Arrays,Cakephp,Multidimensional Array,我在cakephp 2.2.3中有一个多维assoc$模块数组: array( 'type1' => array( (int) 0 => array( 'name' => 'name16', 'type' => '1', 'category' => 'categoryC', 'zone' => 'zone1' ), (int) 1 => arra

我在cakephp 2.2.3中有一个多维assoc$模块数组:

array( 'type1' => array( (int) 0 => array( 'name' => 'name16', 'type' => '1', 'category' => 'categoryC', 'zone' => 'zone1' ), (int) 1 => array( 'name' => 'name17', 'type' => '1', 'category' => 'categoryB', 'zone' => 'zone1' ), (int) 2 => array( 'name' => 'name18', 'type' => '1', 'category' => 'categoryA', 'zone' => 'zone3' ), (int) 3 => array( 'name' => 'name19', 'type' => '1', 'category' => 'categoryC', 'zone' => 'zone3' ), (int) 4 => array( 'name' => 'name22', 'type' => '1', 'category' => 'categoryA', 'zone' => 'zone2' ) ), 'type2' => array( (int) 0 => array( 'name' => 'name1', 'type' => '2', 'category' => 'categoryB', 'zone' => 'zone2' ), (int) 1 => array( 'name' => 'name2', 'type' => '2', 'category' => 'categoryB', 'zone' => 'zone2' ), (int) 2 => array( 'name' => 'name3', 'type' => '2', 'category' => 'categoryA', 'zone' => 'zone1' ), (int) 3 => array( 'name' => 'name4', 'type' => '2', 'category' => 'categoryC', 'zone' => 'zone3' ), (int) 4 => array( 'name' => 'name5', 'type' => '2', 'category' => 'categoryA', 'zone' => 'zone3' ) ) ) 排列( 'type1'=>数组( (int)0=>数组( “名称”=>“名称16”, '类型'=>'1', “类别”=>“类别”, “区域”=>“区域1” ), (int)1=>数组( “名称”=>“名称17”, '类型'=>'1', “类别”=>“类别B”, “区域”=>“区域1” ), (int)2=>数组( “名称”=>“名称18”, '类型'=>'1', “类别”=>“类别”, “区域”=>“区域3” ), (int)3=>数组( “名称”=>“名称19”, '类型'=>'1', “类别”=>“类别”, “区域”=>“区域3” ), (int)4=>数组( 'name'=>'name22', '类型'=>'1', “类别”=>“类别”, “区域”=>“区域2” ) ), 'type2'=>数组( (int)0=>数组( 'name'=>'name1', '类型'=>'2', “类别”=>“类别B”, “区域”=>“区域2” ), (int)1=>数组( “名称”=>“名称2”, '类型'=>'2', “类别”=>“类别B”, “区域”=>“区域2” ), (int)2=>数组( 'name'=>'name3', '类型'=>'2', “类别”=>“类别”, “区域”=>“区域1” ), (int)3=>数组( 'name'=>'name4', '类型'=>'2', “类别”=>“类别”, “区域”=>“区域3” ), (int)4=>数组( 'name'=>'name5', '类型'=>'2', “类别”=>“类别”, “区域”=>“区域3” ) ) ) 我想重新安排一下

array( 'zone1' => array( 'type1' => array( (int) 0 => array( 'name' => 'name17', 'type' => '1', 'category' => 'categoryB' ), (int) 1 => array( 'name' => 'name16', 'type' => '1', 'category' => 'categoryC' ) ), 'type2' => array( (int) 0 => array( 'name' => 'name3', 'type' => '2', 'category' => 'categoryA' ) ) ), 'zone2' => array( 'type1' => array( (int) 0 => array( 'name' => 'name22', 'type' => '1', 'category' => 'categoryA' ) ), 'type2' => array( (int) 0 => array( 'name' => 'name1', 'type' => '2', 'category' => 'categoryB' ), (int) 1 => array( 'name' => 'name2', 'type' => '2', 'category' => 'categoryB' ) ) ), 'zone3' => array( 'type1' => array( (int) 0 => array( 'name' => 'name18', 'type' => '1', 'category' => 'categoryA' ), (int) 0 => array( 'name' => 'name19', 'type' => '1', 'category' => 'categoryC' ) ), 'type2' => array( (int) 0 => array( 'name' => 'name5', 'type' => '2', 'category' => 'categoryA' ), (int) 1 => array( 'name' => 'name4', 'type' => '2', 'category' => 'categoryC' ) ) ) ) 排列( “zone1”=>阵列( 'type1'=>数组( (int)0=>数组( “名称”=>“名称17”, '类型'=>'1', “类别”=>“类别B” ), (int)1=>数组( “名称”=>“名称16”, '类型'=>'1', “类别”=>“类别” ) ), 'type2'=>数组( (int)0=>数组( 'name'=>'name3', '类型'=>'2', “类别”=>“类别” ) ) ), “zone2”=>阵列( 'type1'=>数组( (int)0=>数组( 'name'=>'name22', '类型'=>'1', “类别”=>“类别” ) ), 'type2'=>数组( (int)0=>数组( 'name'=>'name1', '类型'=>'2', “类别”=>“类别B” ), (int)1=>数组( “名称”=>“名称2”, '类型'=>'2', “类别”=>“类别B” ) ) ), '区域3'=>阵列( 'type1'=>数组( (int)0=>数组( “名称”=>“名称18”, '类型'=>'1', “类别”=>“类别” ), (int)0=>数组( “名称”=>“名称19”, '类型'=>'1', “类别”=>“类别” ) ), 'type2'=>数组( (int)0=>数组( 'name'=>'name5', '类型'=>'2', “类别”=>“类别” ), (int)1=>数组( 'name'=>'name4', '类型'=>'2', “类别”=>“类别” ) ) ) ) 其中“类别”应在每个父“类型”中按字母顺序排序

我试过了

$modules = Hash::combine($modules, '{n}', '{n}.{n}', '{s}.{s}.{n}.zone'); $modules=Hash::combine($modules,{n}',{n}.{n}',{s}.{s}.{n}.zone'); 但是没有成功。我想我没有像应该的那样使用Hash::combine…

谢谢,马吕斯

只要在foreach中使用foreach来遍历您的数组,并根据您的偏好构造一个新数组即可。

我认为这个问题的答案会因您对以下问题的回答而大不相同。原始数组中的分区号是“动态”的还是有固定数量的分区,分区1、分区2、分区3。如果它们是固定的,您可以对每个区域使用array_search()。嗨,Tim,我的数组中的区域名称是动态的,没有预设,没有固定数量。谢谢这件事让我抓狂。我知道,随着区域数量的增加,页面加载时间将变得难以忍受,并且必须嵌套一堆foreach循环。我很好奇是否有人能想出一些好的解决办法。您使用Hash类可能是正确的,但我对它不是很精通。您能使用Set::extract来获取所有不同的区域号吗?然后设置::sort以完成数组?嗨,Tim,我了解使用Set::extract获取区域,但不知道如何使用Set::sort将类型添加到区域…谢谢你的回答,但我希望我可以使用一些优化的cakephp函数,但最终我想我会制作嵌套的foreach循环来完成它。在你问这个问题的时间里,你将能够编写两个高度优化的循环。