【发布时间】:2020-05-08 16:36:18
【问题描述】:
如果你有这个 PHP 数组:
$args = array(
'a' => array(
'order' => 1,
),
'b' => array(
'order' => 0,
),
'c' => array(
'order' => 0,
),
'd' => array(
'order' => 0,
),
'e' => array(
'order' => 1,
),
);
有没有办法使用 usort (或其他)方法,可以通过多维键的值对其进行排序,但不是“增量”(0,0,0,1,1),而是交替(0,1 ,0,1,0)。
因此以上面的数组为例,所需的顺序输出是键按备用“顺序”键值排序:
$args = array(
'b' => array(
'order' => 0,
),
'a' => array(
'order' => 1,
),
'c' => array(
'order' => 0,
),
'e' => array(
'order' => 1,
),
'd' => array(
'order' => 0,
),
);
简而言之;键现在按称为“order”的键的值排序 并且值交替,所以它们是:0, 1, 0, 1, 0。
我就是想不通这个!
【问题讨论】:
-
您可能需要使用自定义回调来执行此操作。 See uasort
-
替代值是什么意思?那是怎么排序的?
-
查看所需的输出,您会注意到键按“order”键的值排序,但不是:0,0,0,1,1 - 所需的顺序是 0 ,1,0,1,0。
-
您是否仍在寻找解决方案(无需排序)?如果
1s 比0s 多 2+ 会发生什么,或者相反?是否应该将剩余的项目附加到末尾? -
是的,我正在寻找任何解决方案,重复值的顺序无关紧要,只要最终数组的键具有交替的“顺序”值(只能是 1 或 0 )。
标签: php sorting multidimensional-array usort