$list
排序關聯數組正是如此填充: - 如果它匹配的一些標準由布爾字段
$list[$i++] = array(
"date" => $date,
"desc" => $desc,
"priority" => $priority
);
$priority
設爲TRUE
。
我想$list
排序與行頂部優先TRUE
行。
該列表已按日期排序,我希望保留。
$list
排序關聯數組正是如此填充: - 如果它匹配的一些標準由布爾字段
$list[$i++] = array(
"date" => $date,
"desc" => $desc,
"priority" => $priority
);
$priority
設爲TRUE
。
我想$list
排序與行頂部優先TRUE
行。
該列表已按日期排序,我希望保留。
在PHP> = 5.3
usort ($array, function ($left, $right) {
return $left['priority'] - $right['priority'];
});
或早期版本
function cmp($left, $right) {
return $left['priority'] - $right['priority'];
}
usort($array, 'cmp');
或者使用create_function()(也可用於版本< 5.3)
usort ($array, create_function('$left,$right', 'return $left[\'priority\'] - $right[\'priority\'];'));
這工作,因爲(int) true === 1
和(int) false === 0
true - true == 0
true - false == 1
false - true == -1
false - false == 0
使用usort並提供您自己的排序功能,描述true是否大於false,或者是否爲其他方式。
function cmp($a, $b)
{
return ($a['priority'] > $b['priority']) ? 1 : -1;
}
usort($array, "cmp");
如果要更改排序,如果它們具有相同的優先級值,其中的元素進行排序的穩定性
,則只需修改CMP功能。
使用此功能
function sort2d ($array, $index, $order='asc', $natsort=FALSE, $case_sensitive=FALSE)
{
if(is_array($array) && count($array)>0)
{
foreach(array_keys($array) as $key)
$temp[$key]=$array[$key][$index];
if(!$natsort)
($order=='asc')? asort($temp) : arsort($temp);
else
{
($case_sensitive)? natsort($temp) : natcasesort($temp);
if($order!='asc')
$temp=array_reverse($temp,TRUE);
}
foreach(array_keys($temp) as $key)
(is_numeric($key))? $sorted[]=$array[$key] : $sorted[$key]=$array[$key];
return $sorted;
}
return $array;
}
,並呼籲
sort2d($列表中,$優先);
確定,所以做到這一點。 'usort'採用自定義排序功能,文檔解釋瞭如何使用它。你還沒有指定一個問題。 – 2011-05-05 12:39:29