我需要根据项目的销售量排序数组。然后我需要对它进行排序,以便将优先级(零以上的任何东西)移动到顶部。 时遇到的问题是,当我做第二次排序(步骤3)它取消排序的排序从步骤2基于数组值的PHP排序(优先级)但保持原始排序
步骤1:我有一个数组:
array(
array(
'title' => 'A',
'priority' => 0,
'sold_count' => 44
),
array(
'title' => 'B',
'priority' => 2,
'sold_count' => 0
),
array(
'title' => 'C',
'priority' => 1,
'sold_count' => 3
),
array(
'title' => 'D',
'priority' => 0,
'sold_count' => 33
),
)
步骤2:我对它进行排序基于sold_count并获得:
array(
array(
'title' => 'A',
'priority' => 0,
'sold_count' => 44
),
array(
'title' => 'D',
'priority' => 0,
'sold_count' => 33
),
array(
'title' => 'C',
'priority' => 1,
'sold_count' => 3
),
array(
'title' => 'B',
'priority' => 2,
'sold_count' => 0
),
)
步骤3:将其优先级排序它(我应该得到)。
array(
array(
'title' => 'B',
'priority' => 2,
'sold_count' => 0
),
array(
'title' => 'C',
'priority' => 1,
'sold_count' => 3
),
array(
'title' => 'A',
'priority' => 0,
'sold_count' => 44
),
array(
'title' => 'D',
'priority' => 0,
'sold_count' => 33
),
)
非但没有我想要的(步骤3)我得到正确的排序然而所有其他的指南有一个随机的顺序后,优先级的阵列中。所有没有优先权的指南(优先权=== 0)都不应使用。
我试了一堆方法使用asort,aasort,自定义foreach和设置密钥和此multisort(下面的示例,但采取从here和here, the example 3)。
$sorterA =
$sorterB = array();
foreach($array as $k => $v) {
$sorterA[$k] = $k;
$sorterB[$k] = $v['priority'];
}
array_multisort($sorterA, SORT_NUMERIC, $sorterB, SORT_DESC, SORT_NUMERIC, $array);
注:这两类需要单独做(因为第一个排序并不总是由sold_count排序,而是按日期或其他东西)。
你尝试[我的回答(HTTP:/ /stackoverflow.com/a/16788610/50079)从你链接到的第一个问题?首先按'priority'降序排序,然后按'sold_count'降序排序。 – Jon
还没有。让我看看 – iDev247
[看看](http://ideone.com/BOLilb)。 – Jon