PHP 中的數組為組織和儲存資料提供了強大的資料結構。然而,根據內部數組中的特定值對多維數組進行排序可能是一項具有挑戰性的任務。
考慮具有以下資料結構的PHP 雜湊表:
[ [ "type" => "suite", "name" => "A-Name" ], [ "type" => "suite", "name" => "C-Name" ], [ "type" => "suite", "name" => "B-Name" ] ]
目標是根據內部的「name」鍵對這個資料結構進行排序數組。
各種PHP 函數可用於對陣列進行排序:
但是,這些函數都不直接支援基於內部鍵的排序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中文網其他相關文章!