是否可以对 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
元素时,您的查询失败。
然而,这并不意味着它不能通过算法完成,只是排序或排序不是适合这项工作的工具。
如果你有这个 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
元素时,您的查询失败。
然而,这并不意味着它不能通过算法完成,只是排序或排序不是适合这项工作的工具。