是否可以对 PHP 中的多维数组进行排序,以按替代值排序,即 1/0/1/0/1/0

Is it possible to usort a multidimensional array in PHP to be ordered by alternative values, i.e 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(或其他)方法来按多维键的值对其进行排序,而不是 "incremental" (0,0,0,1,1),它们会交替出现(0,1,0,1,0).

因此,以上面的数组为例,所需的顺序输出是按备用 "order" 键值排序的键:

$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.

这个我简直想不通!

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

然而,这并不意味着它不能通过算法完成,只是排序或排序不是适合这项工作的工具。