首页  >  文章  >  后端开发  >  如何在 PHP 中根据内部数组值对多维数组进行排序?

如何在 PHP 中根据内部数组值对多维数组进行排序?

Barbara Streisand
Barbara Streisand原创
2024-11-03 21:30:29387浏览

How to Sort Multi-Dimensional Arrays Based on Inner Array Value in PHP?

在 PHP 中根据内部数组值对多维数组进行排序

PHP 中的数组为组织和存储数据提供了强大的数据结构。然而,根据内部数组中的特定值对多维数组进行排序可能是一项具有挑战性的任务。

问题描述

考虑具有以下数据结构的 PHP 哈希表:

[
    [
        "type" => "suite",
        "name" => "A-Name"
    ],
    [
        "type" => "suite",
        "name" => "C-Name"
    ],
    [
        "type" => "suite",
        "name" => "B-Name"
    ]
]

目标是根据内部数组中的“name”键对该数据结构进行排序。

排序方法

各种 PHP 函数可用于对数组进行排序:

  • ksort: 按键对关联数组(哈希表)进行排序。
  • sort: 使用值对数组进行排序。
  • usort: 使用用户定义的比较函数对数组进行排序。

但是,这些函数都不直接支持基于内部数组中的键进行排序。

自定义排序函数

为了克服此限制,可以定义自定义排序函数来比较内部数组中的所需值。这可以使用 usort 函数来完成。

<code class="php">function cmp($a, $b) {
    return $b['name'] - $a['name'];
}</code>

此函数比较内部数组中的“name”键,如果第一个数组的名称大于第二个数组的名称。

对数组进行排序

定义比较函数后,可以使用 usort 函数对数组进行排序。

<code class="php">usort($mydata, "cmp");</code>

替代解决方案

自定义排序函数的替代解决方案是创建一个仅包含要排序的值的新数组。这可以通过嵌套循环和条件语句来完成。

<code class="php">function array_sort($array, $on, $order=SORT_ASC) {
    // ...
    return $new_array;
}</code>

此函数接受要排序的数组、要排序的键以及可选的顺序(升序或降序)。它返回一个包含已排序数据的新数组。

用法

array_sort 函数可以按如下方式使用:

<code class="php">$mydata = [
    ['type' => 'suite', 'name' => 'A-Name'],
    ['type' => 'suite', 'name' => 'C-Name'],
    ['type' => 'suite', 'name' => 'B-Name']
];

$sorted_data = array_sort($mydata, 'name', SORT_ASC);

print_r($sorted_data);</code>

以上是如何在 PHP 中根据内部数组值对多维数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn