PHP 中的数组为组织和存储数据提供了强大的数据结构。然而,根据内部数组中的特定值对多维数组进行排序可能是一项具有挑战性的任务。
考虑具有以下数据结构的 PHP 哈希表:
[ [ "type" => "suite", "name" => "A-Name" ], [ "type" => "suite", "name" => "C-Name" ], [ "type" => "suite", "name" => "B-Name" ] ]
目标是根据内部数组中的“name”键对该数据结构进行排序。
各种 PHP 函数可用于对数组进行排序:
但是,这些函数都不直接支持基于内部数组中的键进行排序。
为了克服此限制,可以定义自定义排序函数来比较内部数组中的所需值。这可以使用 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中文网其他相关文章!