男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

usort

(PHP 4, PHP 5, PHP 7, PHP 8)

usort 使用用戶(hù)自定義的比較函數對數組中的值進(jìn)行排序

說(shuō)明

usort(array &$array, callable $callback): bool

根據用戶(hù)提供的比較函數,對 array 原地排序。

注意:

如果兩個(gè)成員完全相同,那么它們將保持原來(lái)的順序。 在 PHP 8.0.0 之前,它們在排序數組中的相對順序是未定義的。

注意: 此函數為 array 中的元素賦與新的鍵名。這將刪除原有的鍵名,而不是僅僅將鍵名重新排序。

參數

array

輸入的數組

callback

在第一個(gè)參數小于,等于或大于第二個(gè)參數時(shí),該比較函數必須相應地返回一個(gè)小于,等于或大于 0 的整數。

callback(mixed $a, mixed $b): int

返回值

總是返回 true 。

更新日志

版本 說(shuō)明
8.0.0 如果 callback 接受引用傳遞參數,該方法將會(huì )拋出 E_WARNING。

范例

示例 #1 usort() 例子

<?php
function cmp($a$b)
{
    if (
$a == $b) {
        return 
0;
    }
    return (
$a $b) ? -1;
}

$a = array(32561);

usort($a"cmp");

foreach (
$a as $key => $value) {
    echo 
"$key$value\n";
}
?>

以上例程會(huì )輸出:

0: 1
1: 2
2: 3
3: 5
4: 6

注意:

很明顯在這個(gè)小例子中用 sort() 函數更合適。

示例 #2 使用多維數組的 usort() 例子

<?php
function cmp($a$b)
{
    return 
strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits"cmp");

while (list(
$key$value) = each($fruits)) {
    echo 
"$fruits[$key]: " $value["fruit"] . "\n";
}
?>

當排序多維數組時(shí),$a$b 包含到數組第一個(gè)索引的引用。

以上例程會(huì )輸出:

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons

示例 #3 usort() example using a member function of an object

<?php
class TestObj {
    var 
$name;

    function 
TestObj($name)
    {
        
$this->name $name;
    }

    
/* 這是一個(gè)靜態(tài)比較函數: */
    
static function cmp_obj($a$b)
    {
        
$al strtolower($a->name);
        
$bl strtolower($b->name);
        if (
$al == $bl) {
            return 
0;
        }
        return (
$al $bl) ? +: -1;
    }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

usort($a, array("TestObj""cmp_obj"));

foreach (
$a as $item) {
    echo 
$item->name "\n";
}
?>

以上例程會(huì )輸出:

b
c
d

示例 #4 usort() 示例,使用閉包對多維數組進(jìn)行排序

<?php
$array
[0] = array('key_a' => 'z''key_b' => 'c');
$array[1] = array('key_a' => 'x''key_b' => 'b');
$array[2] = array('key_a' => 'y''key_b' => 'a');

function 
build_sorter($key) {
    return function (
$a$b) use ($key) {
        return 
strnatcmp($a[$key], $b[$key]);
    };
}

usort($arraybuild_sorter('key_b'));

foreach (
$array as $item) {
    echo 
$item['key_a'] . ', ' $item['key_b'] . "\n";
}
?>

以上例程會(huì )輸出:

y, a
x, b
z, c

參見(jiàn)

  • uasort() - 使用用戶(hù)自定義的比較函數,保持索引和值的對應關(guān)系,原地排序 array。
  • uksort() - 使用用戶(hù)自定義的比較函數對數組中的鍵名進(jìn)行排序
  • 數組排序函數對比
男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站