当前位置: 首页 > 面试题库 >

PHP按两个字段值对数组进行排序

梅修贤
2023-03-14
问题内容

我有这样的数组

数组(
 [0] => Array(“ destination” =>“ Sydney”,
               “ airlines” =>“ airline_1”,
               “ one_way_fare” => 100,
               “返回票价=> 300
       ),
 [2] => Array(“ destination” =>“ Sydney”,
               “ airlines” =>“ airline_2”,
               “ one_way_fare” => 150,
               “返回票价=> 350
       ),
 [3] => Array(“ destination” =>“ Sydney”,
               “ airlines” =>“ airline_3”,
               “ one_way_fare” => 180,
               “返回票价=> 380
       )
)

如何按return_fare asc和one_way_fare asc排序值?

我尝试了array_multisort()但最终却得到了混乱的数据。

Asort仅适用于一维数组,我需要按两个或多个值进行排序,我如何才能像SQL中那样实现此功能,按field1 asc,field2 asc排序?


问题答案:

array_multisort() 是正确的函数,您必须以某种方式搞砸了:

// Obtain a list of columns
foreach ($data as $key => $row) {
    $return_fare[$key]  = $row['return_fare'];
    $one_way_fare[$key] = $row['one_way_fare'];
}

// Sort the data with volume descending, edition ascending
array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $data);

如果您在PHP的手册页上查看的注释array_multisort(),您会发现一个非常有用的array_orderby()函数,该函数可以将上述内容简化为:

$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);

为了避免循环使用array_column()(从PHP 5.5.0开始):

array_multisort(array_column($data, 'return_fare'),  SORT_ASC,
                array_column($data, 'one_way_fare'), SORT_ASC,
                $data);


 类似资料:
  • 问题内容: 我有一个从排序的csv创建的以下列表 我实际上想按两个条件对列表进行排序:首先按字段1中的值,然后按字段2中的值。我该怎么做? 问题答案: 像这样:

  • 问题内容: 如何按其字段之一(例如或)对对象数组进行排序? 问题答案: 使用usort,这是从手册改编而成的示例: 您还可以将任何callable用作第二个参数。这里有些例子: 使用匿名函数(来自PHP 5.3) 从班级内部 使用箭头函数(来自PHP 7.4) 另外,如果要比较数字值,则应使用“比较”功能。

  • 问题内容: 我如何对数组进行排序: 数组结构可能类似于: 那么数据是根据数组的 标题字段* 以 ASC顺序 显示的吗? * 问题答案: 为此使用显式构建的用途。

  • 问题内容: 我有一个由数组组成的数组。我想通过子数组的属性对父数组进行排序。这是一个例子 我想通过在子数组中升序对父数组进行排序,因此在这种情况下,结果将是子数组颠倒(,)。使用众多的PHP排序函数中的任何一种,是否可能? 问题答案: 您可以将usort函数用作:

  • 本文向大家介绍按PHP中的子值对php多维数组进行排序,包括了按PHP中的子值对php多维数组进行排序的使用技巧和注意事项,需要的朋友参考一下 'usort'函数可用于对PHP中的多维数组进行排序。它根据用户定义的条件对数组进行排序- 示例 输出结果 这将产生以下输出- 声明一个包含4个元素的数组,并将此数组传递给usort函数,并在元素上调用用户定义的“ my_sort”函数以确保排序以升序进行

  • 问题内容: 我有以下数组结构: 基于,以增量方式对数组进行排序的最佳方法是什么? 因此结果如下所示: 问题答案: 使用。 在PHP≥5.3中,应改为使用匿名函数: 请注意,以上两个代码均假定为整数。 在PHP≥7.0,使用,而不是减法,以防止溢出/截断问题。