迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

如何在 PHP 中根据给定的键值对关联数组进行排序

作者:迹忆客 最近更新:2023/03/22 浏览次数:

本文将介绍在 PHP 中根据给定的键值对一个数组的关联数组进行排序的方法。

  • 使用 array_multisort() 函数
  • 使用 usort() 函数

在 PHP 中使用 array_multisort() 函数根据给定的键值对关联数组进行排序

我们可以使用内置函数 array_multisort(),按照给定的键值对关联数组的数组进行排序。它可以一次对多个数组或一个多维数组进行排序。使用该函数的正确语法如下

str_replace($arrayName, $sort_order, $sort_flags);

内置的函数 array_multisort() 有三个参数。它的详细参数如下:

参数   说明
$arrayName 强制 这是我们要排序的数组
$sort_order 可选 它告诉我们数组的排序顺序。它可以是 SORT_ASC 代表升序,SORT_DESC 代表降序。它的默认值是 SORT_ASC
$sort_flags 可选 它指定了排序的选项。你可以在这里得到更多信息。

如果成功,此函数将返回 True。否则,它返回 False

下面的程序显示了我们如何使用 array_multisort() 函数对一个关联数组按给定键的值进行排序。

<?php 
$result = array(

   array("firstname"=>"Olivia", "marks"=>85),
   array("firstname"=>"Jacob", "marks"=>60),
   array("firstname"=>"Henry", "marks"=>100),
   array("firstname"=>"Lili", "marks"=>40),
   array("firstname"=>"Stefan", "marks"=>5),
   array("firstname"=>"Bonnie", "marks"=>97),
);
$marks = array();
foreach ($result as $key => $row)
{
    $marks[$key] = $row['marks'];
    
}
array_multisort($marks, SORT_DESC, $result);
print_r($result);  
?> 

我们已经创建了一个数组 $marks,其中包含了原始数组中的标记。之后,我们使用 array_multisort() 函数根据 $result 数组对 $marks 数组进行排序。输出将是排序后的 $result 数组。

输出:

Array
(
    [0] => Array
        (
            [firstname] => Henry
            [marks] => 100
        )

    [1] => Array
        (
            [firstname] => Bonnie
            [marks] => 97
        )

    [2] => Array
        (
            [firstname] => Olivia
            [marks] => 85
        )

    [3] => Array
        (
            [firstname] => Jacob
            [marks] => 60
        )

    [4] => Array
        (
            [firstname] => Lili
            [marks] => 40
        )

    [5] => Array
        (
            [firstname] => Stefan
            [marks] => 5
        )

)

数组是根据 marks 键的值降序排列的。

在 PHP 中使用 usort() 函数根据给定的键值对关联数组进行排序

在 PHP 中,我们还可以使用 usort() 函数,根据给定的键值对关联数组的数组进行排序。这个函数使用用户定义的函数对数组进行排序。使用该函数的正确语法如下。

preg_replace($arrayName, $functionName);

函数 usort() 接受两个参数。其详细参数如下

参数   说明
$arrayName 强制 我们要排序的是数组
$functionName 强制 它是用户自定义的函数,将对传递的数组进行排序。

如果成功,则返回 True,否则返回 False。对数组进行排序的程序如下。

<?php 
function DescSort($item1,$item2)
{
    if ($item1['marks'] == $item2['marks']) return 0;
    return ($item1['marks'] < $item2['marks']) ? 1 : -1;
}
$result = array(

   array("firstname"=>"Olivia", "marks"=>85),
   array("firstname"=>"Jacob", "marks"=>60),
   array("firstname"=>"Henry", "marks"=>100),
   array("firstname"=>"Lili", "marks"=>40),
   array("firstname"=>"Stefan", "marks"=>5),
   array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'DescSort');
print_r($result);
?> 

输出:

Array
(
    [0] => Array
        (
            [firstname] => Henry
            [marks] => 100
        )

    [1] => Array
        (
            [firstname] => Bonnie
            [marks] => 97
        )

    [2] => Array
        (
            [firstname] => Olivia
            [marks] => 85
        )

    [3] => Array
        (
            [firstname] => Jacob
            [marks] => 60
        )

    [4] => Array
        (
            [firstname] => Lili
            [marks] => 40
        )

    [5] => Array
        (
            [firstname] => Stefan
            [marks] => 5
        )

)

对于升序排序,该函数将是:

<?php 
function AscSort($item1,$item2)
{
    if ($item1['marks'] == $item2['marks']) return 0;
    return ($item1['marks'] > $item2['marks']) ? 1 : -1;
}
$result = array(

   array("firstname"=>"Olivia", "marks"=>85),
   array("firstname"=>"Jacob", "marks"=>60),
   array("firstname"=>"Henry", "marks"=>100),
   array("firstname"=>"Lili", "marks"=>40),
   array("firstname"=>"Stefan", "marks"=>5),
   array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'AscSort');
print_r($result);
?> 

输出:

Array
(
    [0] => Array
        (
            [firstname] => Stefan
            [marks] => 5
        )

    [1] => Array
        (
            [firstname] => Lili
            [marks] => 40
        )

    [2] => Array
        (
            [firstname] => Jacob
            [marks] => 60
        )

    [3] => Array
        (
            [firstname] => Olivia
            [marks] => 85
        )

    [4] => Array
        (
            [firstname] => Bonnie
            [marks] => 97
        )

    [5] => Array
        (
            [firstname] => Henry
            [marks] => 100
        )

)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便