【发布时间】:2012-11-26 15:15:23
【问题描述】:
我在 cakephp 2.2.3 中有这个多维 assoc $modules 数组:
大批( 'type1' => 数组( (int) 0 => 数组( '名称' => 'name16', '类型' => '1', '类别' => '类别C', '区域' => '区域1' ), (int) 1 => 数组( '名称' => 'name17', '类型' => '1', '类别' => '类别B', '区域' => '区域1' ), (int) 2 => 数组( '名字' => 'name18', '类型' => '1', '类别' => '类别A', '区域' => '区域3' ), (int) 3 => 数组( '名字' => 'name19', '类型' => '1', '类别' => '类别C', '区域' => '区域3' ), (int) 4 => 数组( 'name' => 'name22', '类型' => '1', '类别' => '类别A', '区域' => '区域2' ) ), 'type2' => 数组( (int) 0 => 数组( '名称' => '名称1', '类型' => '2', '类别' => '类别B', '区域' => '区域2' ), (int) 1 => 数组( '名称' => '名称2', '类型' => '2', '类别' => '类别B', '区域' => '区域2' ), (int) 2 => 数组( '名称' => '名称3', '类型' => '2', '类别' => '类别A', '区域' => '区域1' ), (int) 3 => 数组( '名称' => '名称4', '类型' => '2', '类别' => '类别C', '区域' => '区域3' ), (int) 4 => 数组( '名称' => '名称5', '类型' => '2', '类别' => '类别A', '区域' => '区域3' ) ) )我想重新排列它
大批( 'zone1' => 数组( 'type1' => 数组( (int) 0 => 数组( '名称' => 'name17', '类型' => '1', '类别' => '类别B' ), (int) 1 => 数组( '名称' => 'name16', '类型' => '1', '类别' => '类别C' ) ), 'type2' => 数组( (int) 0 => 数组( '名称' => '名称3', '类型' => '2', '类别' => '类别A' ) ) ), 'zone2' => 数组( 'type1' => 数组( (int) 0 => 数组( 'name' => 'name22', '类型' => '1', '类别' => '类别A' ) ), 'type2' => 数组( (int) 0 => 数组( '名称' => '名称1', '类型' => '2', '类别' => '类别B' ), (int) 1 => 数组( '名称' => '名称2', '类型' => '2', '类别' => '类别B' ) ) ), 'zone3' => 数组( 'type1' => 数组( (int) 0 => 数组( '名字' => 'name18', '类型' => '1', '类别' => '类别A' ), (int) 0 => 数组( '名字' => 'name19', '类型' => '1', '类别' => '类别C' ) ), 'type2' => 数组( (int) 0 => 数组( '名称' => '名称5', '类型' => '2', '类别' => '类别A' ), (int) 1 => 数组( '名称' => '名称4', '类型' => '2', '类别' => '类别C' ) ) ) )“类别”应在每个父“类型”中按字母顺序排序
我试过了
$modules = Hash::combine($modules, '{n}', '{n}.{n}', '{s}.{s}.{n}.zone');
但没有成功。我想我没有按我应该的那样使用 Hash::combine...
谢谢,马吕斯
【问题讨论】:
-
我认为这个问题的答案会根据你对以下问题的回答而有很大的不同。您的原始数组中的区域编号是“动态的”还是有固定数量的区域、区域 1、区域 2、区域 3。如果它们是固定的,您可以为每个区域使用 array_search()。
-
嗨,蒂姆,我的数组中的区域名称是动态的,没有预设,也没有固定数量。谢谢!
-
我在这个问题上摸不着头脑。我知道随着区域数量的增加,您的页面加载时间将变得难以忍受,并且必须嵌套一堆 foreach 循环。很想知道是否有人提出了一些好的解决方案。您可能在 Hash 类上走在正确的轨道上,但我对它不是很精通。
-
您可以使用 Set::extract 来获取所有不同的区域编号吗?然后 Set::sort 来完成数组? book.cakephp.org/1.3/en/The-Manual/Core-Utility-Libraries/…
-
嗨蒂姆,我了解使用 Set::extract 获取区域,但不明白如何使用 Set::sort 将类型添加到区域...跨度>
标签: php arrays cakephp multidimensional-array