首頁  >  文章  >  後端開發  >  如何在 PHP 中根據內部數組值對多維數組進行排序?

如何在 PHP 中根據內部數組值對多維數組進行排序?

Barbara Streisand
Barbara Streisand原創
2024-11-03 21:30:29386瀏覽

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: 對關聯數組(雜湊表)進行排序key。
  • sort: 使用數值對陣列進行排序。
  • usort: 使用使用者定義的比較函數對陣列進行排序。

但是,這些函數都不直接支援基於內部鍵的排序array.

自訂排序函數

為了克服此限制,可以定義自訂排序函數來比較內部數組中的所需值。這可以使用 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
上一篇:循環句下一篇:循環句