复制代码 代码如下:
<?php
/*
解决 PHP 中 usort 在值相同时改变原始位置的问题
作者:Artlover
*/
$arr = array(
array('a' => 5, 'b' => 3),
array('a' => 5, 'b' => 1),
array('a' => 5, 'b' => 4),
array('a' => 5, 'b' => 2),
);
?>
复制代码 代码如下:
<?php
/*
解决 PHP 中 usort 在值相同时改变原始位置的问题
作者:Artlover
*/
$callback = create_function('$a,$b', 'return ($a["a"] == $b["a"])?0:(($a["a"] > $b["a"]) ? 1 : -1);');
usort($arr, $callback);
?>
复制代码 代码如下:
Array
(
[0] => Array
(
[a] => 5
[b] => 2
)
[1] => Array
(
[a] => 5
[b] => 4
)
[2] => Array
(
[a] => 5
[b] => 1
)
[3] => Array
(
[a] => 5
[b] => 3
)
)
复制代码 代码如下:
<?php
/*
解决 PHP 中 usort 在值相同时改变原始位置的问题
作者:Artlover
*/
// 索引计数器
$i = 0;
// 创建2个空数组,第一个保存要排序的字段,第二个保存原始索引信息
$a = $index = array();
foreach ($arr as $key => $data) {
$a[$key] = $data['a'];
$index[] = $i++;
}
// 第一个数组先排,接着按原始索引排
array_multisort($a, SORT_ASC, $index, SORT_ASC, $arr);
?>
复制代码 代码如下:
Array
(
[0] => Array
(
[a] => 5
[b] => 3
)
[1] => Array
(
[a] => 5
[b] => 1
)
[2] => Array
(
[a] => 5
[b] => 4
)
[3] => Array
(
[a] => 5
[b] => 2
)
)
新闻热点
疑难解答