任何人都可以解释PHP中的uksort()如何工作?

时间:2012-05-16 06:01:14

标签: php

我在PHP手册中已经阅读了uksort,但很难理解。

任何人都可以帮助我吗?

以下是一个例子:

 <?php  
 function my_sort($x, $y)  
 {  
   if ($x == $y) return 0;  
   return ($x > $y) ? -1 : 1;  
 }  
 $people = array(
   "10" => "javascript",  
   "20" => "php", "60" => "vbscript",  
   "40" => "jsp");  
 uksort($people, "my_sort");  
 print_r($people);  
 ?>

这里发生了什么?

1 个答案:

答案 0 :(得分:3)

manual中所述,您的函数(本例中为my_sort)应返回:

    如果您认为-1小于$a ,则
  • 为负整数(在本例中为$b) 如果您认为$a大于$b
  • ,则
  • 为正整数
  • 0如果您认为它们是相同的。

正如您可能已经猜到的那样,uksort将使用您的比较函数来查看元素应该在排序数组中的顺序。它会多次调用你的函数,每次都有两个键。您将这些键与彼此的键进行比较,并将结果返回。

这个想法是你可以编写自己的比较函数,它可以做一些非常重要的事情,例如,如果你想让某个键永远是第一个。您的简单示例可以使用常规krsort代替。