首页 > 解决方案 > 是否可以在 PHP 中对多维数组进行排序以按替代值排序,即 1/0/1/0/1/0

问题描述

如果你有这个 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。

我根本想不通这个!

标签: phpsortingmultidimensional-arrayusort

解决方案


不,这是不可能的。排序意味着您可以比较两个元素并确定它们应该具有的顺序。当您有两个1元素时,您的查询将失败。

但是,这并不意味着它不能通过算法完成,只是排序或排序不是这项工作的正确工具。


推荐阅读