Php 在我的项目中解释usort

Php 在我的项目中解释usort,php,arrays,sorting,Php,Arrays,Sorting,您好,几天前我请求帮助排序我的数组。我得到了一个效果很好的响应,但我不完全确定它是如何对数组进行排序的,所以我只是想知道是否有人可以快速解释它是如何进行排序的 这是我被派来对数组进行排序的内容$times_表是我创建的数组。我不明白$a[3]-$b[3] function sortByRandomNo($a, $b) { // return $b[3] - $a[3]; // ***descending **** return $a[3] - $b[3]; //****Acsen

您好,几天前我请求帮助排序我的数组。我得到了一个效果很好的响应,但我不完全确定它是如何对数组进行排序的,所以我只是想知道是否有人可以快速解释它是如何进行排序的

这是我被派来对数组进行排序的内容$times_表是我创建的数组。我不明白$a[3]-$b[3]

function sortByRandomNo($a, $b) {
   // return $b[3] - $a[3]; // ***descending ****
     return $a[3] - $b[3]; //****Acsending****
}

usort($times_table, 'sortByRandomNo');

这完全取决于作为第二个参数传递给
usort
的compare函数,如果查看php.net文档,您会看到
value\u compare\u func
声明

如果第一个参数分别小于、等于或大于第二个参数,则比较函数必须返回小于、等于或大于零的整数


这可能就是为什么如果您这样做,
$a[3]-$b[3]
是升序,
$b[3]-$a[3]
是降序。

如果$times\u表是数组数组,usort会依次比较条目对($a和$b)。。。。你在比较每个条目的第四个元素,看看哪个更重要谢谢你的回答,但是“-”做什么呢?
-
只是一个数学减法。。。。返回值将是正整数或负整数(如果两个值相同,则返回0)。。。。。正整数表示$a[3]大于$b[3],负整数表示$a[3]小于$b[3],如果第一个参数分别小于、等于或大于第二个参数,则比较函数必须从:
返回小于、等于或大于零的整数。
,正如@mina.nsami在他的回答中所引用的,感谢您的回复,并为自己的烦人和愚蠢感到抱歉,但这是否意味着如果我在数组的第3列中有27、38、58和82个。Usort正在执行27-38,Usort()比较每对值(不一定有效),因此它将对所有基本组合进行比较,如
27-38
27-58
27-82
38-58
38-82
58-82
。。。。从每次比较的结果(正回报或负回报)中,它知道哪些元素应该放在有序阵列中的哪些其他元素之前。为了获得帮助和耐心,它会大量存储这些元素。