我是Laravel的新手,我想知道我是否可以按字母顺序对以下多维数组中的国家/地区进行排序?因此,我希望各大洲中的所有国家/地区都按字母顺序排序。
"EU" => array:9 0 => "NL" 1 => "BE" 3 => "FR" 4 => "DE" 5 => "ES" 6 => "IT" 7 => "GB" 8 => "TR" 9 => "DK" ] "AS" => array:2 ]
wnavrhmk1#
看起来你需要按值对内部数组进行排序。这里有一种方法。
$arr = [ "EU" => [ 0 => "NL", 1 => "BE", 3 => "FR", 4 => "DE", 5 => "ES", 6 => "IT", 7 => "GB", 8 => "TR", 9 => "DK", ], "AS" => ["AB", "AA"] ]; foreach($arr as $continent => $countries) { asort($countries); $arr[$continent] = $countries; } var_dump($arr);
1szpjjfi2#
既然您正在寻找Laravel的答案,那么您可能会对Arr::sortRecursive()帮助器感兴趣,因为它提供了一个简短而流畅的实现。让我来演示一下您的数据代码,同时也将您的数据扩展到我的点。
Arr::sortRecursive()
use Illuminate\Support\Arr; $array = [ "EU" => [ "NL", "BE", "FR", "DE", "ES", "IT", "GB", "TR", "DK", ], "AS" => [ "JA", "IN", "CH", ], "NA" => [ "US", "ME", "CA", ], ]; $sorted = Arr::sortRecursive($array); /* [ "AS" => [ "CH", "IN", "JA", ], "EU" => [ "BE", "DE", "DK", "ES", "FR", "GB", "IT", "NL", "TR", ], "NA" => [ "CA", "ME", "US", ], ] */
suzh9iv83#
您的输入数组是关联数组的关联数组(具有一致的2级深度),因此不需要递归。使用经典循环或函数迭代器(如array_walk()),通过引用修改行并调用sort()。根据另一个答案下的注解判断,您还需要对每行调用array_unique()--以删除重复值。代码:(Demo)
array_walk()
sort()
array_unique()
foreach ($arr as &$row) { sort($row); } var_export($arr);
对于函数式编程,array_walk()可以简洁地对行进行排序。我省略了重复删除调用。(Demo)
array_walk($arr, fn(&$row) => sort($row)); var_export($arr);
enxuqcxy4#
Laravel和这些东西没有任何关系。你应该使用PHP函数,这里有一个例子:
$arr = [ 0 => "NL", 1 => "BE", 3 => "FR", 4 => "DE", 5 => "ES", 6 => "IT", 7 => "GB", 8 => "TR", 9 => "DK", ]; sort($arr); print_r($arr);
结果:
Array ( [0] => BE [1] => DE [2] => DK [3] => ES [4] => FR [5] => GB [6] => IT [7] => NL [8] => TR )
4条答案
按热度按时间wnavrhmk1#
看起来你需要按值对内部数组进行排序。这里有一种方法。
1szpjjfi2#
既然您正在寻找Laravel的答案,那么您可能会对
Arr::sortRecursive()
帮助器感兴趣,因为它提供了一个简短而流畅的实现。让我来演示一下您的数据代码,同时也将您的数据扩展到我的点。suzh9iv83#
您的输入数组是关联数组的关联数组(具有一致的2级深度),因此不需要递归。
使用经典循环或函数迭代器(如
array_walk()
),通过引用修改行并调用sort()
。根据另一个答案下的注解判断,您还需要对每行调用array_unique()
--以删除重复值。代码:(Demo)
对于函数式编程,
array_walk()
可以简洁地对行进行排序。我省略了重复删除调用。(Demo)enxuqcxy4#
Laravel和这些东西没有任何关系。你应该使用PHP函数,这里有一个例子:
结果: