php怎么对二维数组排序

不及物动词 其他 126

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在PHP中,可以使用内置的函数`array_multisort()`对二维数组进行排序。`array_multisort()`函数可以按照指定的键对二维数组的多个列进行排序。

    下面是对二维数组的两个列进行排序的示例代码:
    “`php
    $array = array(
    array(“name” => “John”, “age” => 20),
    array(“name” => “Tom”, “age” => 25),
    array(“name” => “Alex”, “age” => 18),
    array(“name” => “Mike”, “age” => 30)
    );

    $names = array();
    $ages = array();
    foreach ($array as $key => $row) {
    $names[$key] = $row[“name”];
    $ages[$key] = $row[“age”];
    }

    // 对$name列进行升序排序,对$age列进行降序排序
    array_multisort($names, SORT_ASC, $ages, SORT_DESC, $array);

    print_r($array);
    “`
    执行上述代码,将得到以下输出结果:
    “`
    Array
    (
    [0] => Array
    (
    [name] => Alex
    [age] => 18
    )

    [1] => Array
    (
    [name] => John
    [age] => 20
    )

    [2] => Array
    (
    [name] => Mike
    [age] => 30
    )

    [3] => Array
    (
    [name] => Tom
    [age] => 25
    )
    )
    “`
    上述代码中,首先创建了两个空数组`$names`和`$ages`,然后使用foreach循环遍历二维数组,将name和age列的值存储到这两个数组中。之后,使用`array_multisort()`函数对`$names`和`$ages`进行排序,并传递`SORT_ASC`和`SORT_DESC`参数分别表示升序和降序排序。最后,输出排序结果。

    除了`array_multisort()`函数,还可以使用其他排序函数来对二维数组进行排序,例如`usort()`函数可以根据自定义的比较函数对数组进行排序。根据排序需求选择合适的函数即可。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    PHP提供了多种方法来对二维数组进行排序。以下是五种常见的排序方法:

    1. 使用array_multisort()函数:此函数可以对多个数组或多维数组进行排序。它可以按照一个或多个列对二维数组进行排序。例如,可以按照某一列的值升序或降序排序。
    代码示例:

    “`php
    $students = array(
    array(‘name’ => ‘John’, ‘age’ => 21),
    array(‘name’ => ‘Jane’, ‘age’ => 19),
    array(‘name’ => ‘Tom’, ‘age’ => 22),
    );

    // 按照年龄升序排序
    array_multisort(array_column($students, ‘age’), SORT_ASC, $students);

    // 输出排序后的数组
    print_r($students);
    “`

    输出结果:

    “`
    Array (
    [0] => Array ( [name] => Jane [age] => 19 )
    [1] => Array ( [name] => John [age] => 21 )
    [2] => Array ( [name] => Tom [age] => 22 )
    )
    “`

    2. 使用usort()函数:此函数用于自定义排序。可以通过自定义比较函数来实现按照特定规则进行排序。
    代码示例:

    “`php
    $students = array(
    array(‘name’ => ‘John’, ‘age’ => 21),
    array(‘name’ => ‘Jane’, ‘age’ => 19),
    array(‘name’ => ‘Tom’, ‘age’ => 22),
    );

    // 按照名字长度升序排序
    usort($students, function($a, $b) {
    return strlen($a[‘name’]) – strlen($b[‘name’]);
    });

    // 输出排序后的数组
    print_r($students);
    “`

    输出结果:

    “`
    Array (
    [0] => Array ( [name] => Tom [age] => 22 )
    [1] => Array ( [name] => John [age] => 21 )
    [2] => Array ( [name] => Jane [age] => 19 )
    )
    “`

    3. 使用array_column()和array_multisort()函数:array_column()函数可以提取指定列的值,然后使用array_multisort()函数对提取的列进行排序,最后再根据排序结果对二维数组进行重新排序。
    代码示例:

    “`php
    $students = array(
    array(‘name’ => ‘John’, ‘age’ => 21),
    array(‘name’ => ‘Jane’, ‘age’ => 19),
    array(‘name’ => ‘Tom’, ‘age’ => 22),
    );

    // 按照名字升序排序
    array_multisort(array_column($students, ‘name’), SORT_ASC, $students);

    // 输出排序后的数组
    print_r($students);
    “`

    输出结果:

    “`
    Array (
    [0] => Array ( [name] => Jane [age] => 19 )
    [1] => Array ( [name] => John [age] => 21 )
    [2] => Array ( [name] => Tom [age] => 22 )
    )
    “`

    4. 使用array_map()函数:array_map()函数可以将一个或多个数组的每个元素传递给指定的回调函数,并返回一个包含回调函数的结果的新数组。可以使用此函数将特定列提取为新数组,然后对新数组进行排序。
    代码示例:

    “`php
    $students = array(
    array(‘name’ => ‘John’, ‘age’ => 21),
    array(‘name’ => ‘Jane’, ‘age’ => 19),
    array(‘name’ => ‘Tom’, ‘age’ => 22),
    );

    // 提取名字列为新数组,然后按照长度升序排序
    $nameArray = array_map(function($student) {
    return $student[‘name’];
    }, $students);
    array_multisort(array_map(‘strlen’, $nameArray), $nameArray);

    // 根据排序后的新数组对原数组进行重新排序
    $newStudents = array();
    foreach ($nameArray as $name) {
    foreach ($students as $student) {
    if ($student[‘name’] == $name) {
    $newStudents[] = $student;
    break;
    }
    }
    }

    // 输出排序后的数组
    print_r($newStudents);
    “`

    输出结果:

    “`
    Array (
    [0] => Array ( [name] => Tom [age] => 22 )
    [1] => Array ( [name] => John [age] => 21 )
    [2] => Array ( [name] => Jane [age] => 19 )
    )
    “`

    5. 使用foreach循环和usort()函数:可以使用foreach循环遍历二维数组的每一列,然后使用usort()函数对每一列进行排序。
    代码示例:

    “`php
    $students = array(
    array(‘name’ => ‘John’, ‘age’ => 21),
    array(‘name’ => ‘Jane’, ‘age’ => 19),
    array(‘name’ => ‘Tom’, ‘age’ => 22),
    );

    // 按照名字升序排序
    foreach ($students as $key => $row) {
    $name[$key] = $row[‘name’];
    }
    array_multisort($name, SORT_ASC, $students);

    // 输出排序后的数组
    print_r($students);
    “`

    输出结果:

    “`
    Array (
    [0] => Array ( [name] => Jane [age] => 19 )
    [1] => Array ( [name] => John [age] => 21 )
    [2] => Array ( [name] => Tom [age] => 22 )
    )
    “`

    这些方法可以帮助您在PHP中对二维数组进行排序,您可以根据实际需求选择适合的方法。每种方法都有其优势和适用场景。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    PHP提供了一些函数来对二维数组进行排序。常用的函数有`array_multisort()`、`usort()`、`uasort()`等。下面分别介绍这几个函数的使用方法。

    ## 使用array_multisort()函数对二维数组排序
    `array_multisort()`函数可以对一个或多个数组进行排序,并重新索引所有数组。它可以根据指定的条件对二维数组进行排序。

    ### 方法一:
    “`php
    $students = array(
    array(‘name’ => ‘Alice’, ‘score’ => 90),
    array(‘name’ => ‘Bob’, ‘score’ => 85),
    array(‘name’ => ‘Charlie’, ‘score’ => 95)
    );

    // 根据分数降序排序
    array_multisort(array_column($students, ‘score’), SORT_DESC, $students);

    // 打印排序后的结果
    print_r($students);
    “`

    ### 方法二:
    “`php
    $students = array(
    array(‘name’ => ‘Alice’, ‘score’ => 90),
    array(‘name’ => ‘Bob’, ‘score’ => 85),
    array(‘name’ => ‘Charlie’, ‘score’ => 95)
    );

    // 定义一个callback函数来自定义排序规则
    function cmp($a, $b)
    {
    return $b[‘score’] – $a[‘score’];
    }

    // 对数组进行排序
    usort($students, ‘cmp’);

    // 打印排序后的结果
    print_r($students);
    “`

    ## 使用usort()函数对二维数组排序
    `usort()`函数可以通过自定义函数对数组进行排序。自定义函数需要接受两个参数,根据定义的规则返回-1、0、1来对比两个值的相对大小。

    “`php
    $students = array(
    array(‘name’ => ‘Alice’, ‘score’ => 90),
    array(‘name’ => ‘Bob’, ‘score’ => 85),
    array(‘name’ => ‘Charlie’, ‘score’ => 95)
    );

    // 定义一个callback函数来自定义排序规则
    function cmp($a, $b)
    {
    return $b[‘score’] – $a[‘score’];
    }

    // 对数组进行排序
    usort($students, ‘cmp’);

    // 打印排序后的结果
    print_r($students);
    “`

    ## 使用uasort()函数对二维数组排序
    `uasort()`函数可以通过自定义函数对数组进行排序。自定义函数需要接受两个参数,根据定义的规则返回-1、0、1来对比两个键值对的相对大小。

    “`php
    $students = array(
    ‘Alice’ => array(‘score’ => 90),
    ‘Bob’ => array(‘score’ => 85),
    ‘Charlie’ => array(‘score’ => 95)
    );

    // 定义一个callback函数来自定义排序规则
    function cmp($a, $b)
    {
    return $b[‘score’] – $a[‘score’];
    }

    // 对数组进行排序
    uasort($students, ‘cmp’);

    // 打印排序后的结果
    print_r($students);
    “`

    以上就是对二维数组排序的几种常用方法。根据实际需求选择合适的方法对二维数组进行排序。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部