【发布时间】:2018-03-01 11:47:03
【问题描述】:
我有一个包含混合在一起的水果和蔬菜的数组。我想按它们的类型对每个项目进行分组,即“蔬菜”(由值 = 1 表示)或“水果”(由值 = 2 表示),然后将每个项目按分配给它的顺序放置。
这是我的起始数组:
array(3) {
[0]=>
array(16) {
["name"]=> "apples"
["position"]=> "1"
["basket"]=> "2"
}
[1]=>
array(16) {
["name"]=> "potatoes"
["position"]=> "2"
["basket"]=> "1"
}
[2]=>
array(16) {
["name"]=> "onions"
["position"]=> "1"
["basket"]=> "1"
}
[3]=>
array(16) {
["name"]=> "oranges"
["position"]=> "3"
["basket"]=> "2"
}
[4]=>
array(16) {
["name"]=> "tomatoes"
["position"]=> "4"
["basket"]=> "1"
}
[5]=>
array(16) {
["name"]=> "grapes"
["position"]=> "5"
["basket"]=> "2"
}
[6]=>
array(16) {
["name"]=> "avocado"
["position"]=> "2"
["basket"]=> "2"
}
[7]=>
array(16) {
["name"]=> "bean"
["position"]=> "5"
["basket"]=> "1"
}
[8]=>
array(16) {
["name"]=> "pineapple"
["position"]=> "4"
["basket"]=> "2"
}
[9]=>
array(16) {
["name"]=> "pepper"
["position"]=> "3"
["basket"]=> "1"
}
}
这是我想要达到的结果:
array(3) {
[0]=>
array(16) {
["name"]=> "onions"
["position"]=> "1"
["basket"]=> "1"
}
[1]=>
array(16) {
["name"]=> "potatoes"
["position"]=> "2"
["basket"]=> "1"
}
[2]=>
array(16) {
["name"]=> "pepper"
["position"]=> "3"
["basket"]=> "1"
}
[3]=>
array(16) {
["name"]=> "tomatoes"
["position"]=> "4"
["basket"]=> "1"
}
[4]=>
array(16) {
["name"]=> "bean"
["position"]=> "5"
["basket"]=> "1"
}
[5]=>
array(16) {
["name"]=> "apples"
["position"]=> "1"
["basket"]=> "2"
}
[6]=>
array(16) {
["name"]=> "avocado"
["position"]=> "2"
["basket"]=> "2"
}
[7]=>
array(16) {
["name"]=> "oranges"
["position"]=> "3"
["basket"]=> "2"
}
[8]=>
array(16) {
["name"]=> "pineapple"
["position"]=> "4"
["basket"]=> "2"
}
[9]=>
array(16) {
["name"]=> "grapes"
["position"]=> "5"
["basket"]=> "2"
}
}
在'hopeful'结果中,可以看出字段'basket'有2组,分别是1 & 2 因此数组必须是“有序”的,它是按顺序“分组”的。
最后,每个“组”项必须按自己的顺序排序。
这是我目前所拥有的:
uasort($array, function($a, $b) {return $a['basket'] - $b['basket'];});
我可以根据自己的需要调整它吗?
【问题讨论】:
-
你怎么知道哪一个是
fruit,哪一个是vegetable?在你的数组中没有什么可以像这样区分的 -
@AlivetoDie 篮子接缝为 1 用于水果和 2 用于蔬菜
-
@Alive to Die 实际上这并不重要。专注于“处理”这一区别的领域是“篮子”领域。换句话说,这些项目需要按“篮子”分组,然后每个“篮子”项目必须按其分配的“位置”排序。这是否有助于澄清和回答您的问题?
-
@MacBooc 100% 正确!
标签: php sorting multidimensional-array grouping usort