復制代碼 代碼如下:
 
<?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 
) 
) 
新聞熱點
疑難解答