📜  排序数组php(1)

📅  最后修改于: 2023-12-03 15:39:49.877000             🧑  作者: Mango

排序数组 PHP

在 PHP 中,排序是常见的操作之一。手动排序一个数组可以用 sort()rsort() 函数,它们分别按升序和降序排序。

$numbers = array(4, 2, 8, 6);
sort($numbers);
print_r($numbers);

rsort($numbers);
print_r($numbers);

输出:

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
)

Array
(
    [0] => 8
    [1] => 6
    [2] => 4
    [3] => 2
)
数组多维排序

如果需要按数组中的多个维度进行排序,可以使用 array_multisort() 函数。以下代码按 last_namefirst_nameage 排序一个多维数组。

$people = array(
    array('last_name' => 'Doe', 'first_name' => 'John', 'age' => 43),
    array('last_name' => 'Smith', 'first_name' => 'Mary', 'age' => 27),
    array('last_name' => 'Johnson', 'first_name' => 'Linda', 'age' => 50)
);

// 按 last_name 升序,如果相同则按照 first_name 升序,如果相同则按照 age 升序
foreach ($people as $key => $row) {
    $last_name[$key] = $row['last_name'];
    $first_name[$key] = $row['first_name'];
    $age[$key] = $row['age'];
}

array_multisort($last_name, SORT_ASC, $first_name, SORT_ASC, $age, SORT_ASC, $people);

print_r($people);

输出:

Array
(
    [0] => Array
        (
            [last_name] => Doe
            [first_name] => John
            [age] => 43
        )

    [1] => Array
        (
            [last_name] => Johnson
            [first_name] => Linda
            [age] => 50
        )

    [2] => Array
        (
            [last_name] => Smith
            [first_name] => Mary
            [age] => 27
        )

)
数组自定义排序

如果需要按照自定义规则进行排序,可以实现 usort() 函数的自定义比较函数。以下代码按照字符串长度排序一个数组。

$words = array('dog', 'apple', 'bat');

usort($words, function($a, $b) {
    return strlen($a) - strlen($b);
});

print_r($words);

输出:

Array
(
    [0] => dog
    [1] => bat
    [2] => apple
)

在自定义比较函数中,如果返回负数,则表示 $a 排在 $b 前面,如果返回正数,则表示 $a 排在 $b 后面,如果返回 0,则表示它们相等。

这是一个简单的介绍,如果需要更详细的信息,请查看 PHP 官方文档