usort(),使用对象的成员函数的示例。php-usort()-数组排序,使用用户自定义的比较函数对数组中的值进行排序,本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
支持版本
(PHP 4, PHP 5, PHP 7, PHP 8)
定义和用法
usort(array &$array, callable $callback): bool
usort — 使用用户自定义的比较函数对数组中的值进行排序
注意:如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
注意: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。
参数解释
参数 | 描述 |
---|---|
array | 输入的数组 |
callback | 在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。 |
callback(mixed $a, mixed $b): int
警告:Returning non-integer values from the comparison function, such as float, will result in an internal cast to int of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.
函数返回值
成功时返回 true, 或者在失败时返回 false。
演示案例
<?php
namespace app\index\controller;
use app\common\controller\Base;
class Index extends Base
{
function __construct($name = '')
{
$this->name = $name;
}
public function index()
{
echo "index";
}
/* This is the static comparing function: */
public static function compare_obj($a, $b)
{
$al = strtolower($a->name);
$bl = strtolower($b->name);
echo $al.'--'.$bl."<br>";
if ($al == $bl) {
return 0;
}
return ($al > $bl) ? +1 : -1;
}
}
$a[] = new Index("ab");
$a[] = new Index("ac");
$a[] = new Index("aa");
usort($a, array("app\index\controller\Index", "compare_obj"));
foreach ($a as $item) {
echo $item->name."\n";
}
返回结果
ab--ac
ac--aa
ab--aa
aa ab ac index
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论