【问题标题】:rearrange multidimensional array in cakephp 2.2在 cakephp 2.2 中重新排列多维数组
【发布时间】: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


【解决方案1】:

只需在 foreach 中使用 foreach 遍历您的数组并根据您的偏好构建一个新数组。

【讨论】:

  • 感谢您的回答,但我希望我可以为此使用一些优化的 cakephp 函数,但最终我想我最终会制作嵌套的 foreach 循环来完成它。
  • 在您提出问题的时间里,您已经能够编写 2 个高度优化的循环。
猜你喜欢
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 2020-01-06
相关资源
最近更新 更多