我有一个如下格式的数组,如何按键升序排列每一行的数据?
[
[
40 => 2,
80 => 1,
20 => 0,
60 => 0,
100 => 0,
],
[
60 => 2,
80 => 1,
20 => 0,
40 => 0,
100 => 0,
],
]
预期结果:
[
[
20 => 0,
40 => 2,
60 => 0,
80 => 1,
100 => 0,
],
[
20 => 0,
40 => 0,
60 => 2,
80 => 1,
100 => 0,
],
]
我尝试使用array_values()
和array_combine()
,但没有成功。
3条答案
按热度按时间mrphzbgm1#
使用
array_combine
(http://php.net/manual/en/function.array-combine.php)合并数组,然后使用ksort
(http://php.net/manual/en/function.ksort.php)对键进行排序。ia2d9nvy2#
如果开发人员事先知道这些键,则可以在默认数组中硬编码键的顺序,然后覆盖这些值。
foreach()
通过引用修改循环(Demo)foreach()
以填充新阵列:(Demo)array_map()
:(Demo)请记住,
array_merge()
不能与数字键. Watch it not work properly一起正常工作。如果事先不知道键,可以使用经典循环或函数迭代器对键进行排序。
foreach()
循环通过引用修改行:(一对四对一对)请注意,如果不使用
&
,则排序将应用于循环正在迭代的数组的“副本”(而不是迭代原始数组)。Watch it not work properly。与
array_walk()
相同,您必须通过引用修改,否则自定义函数内部的进程将看起来被遗忘/丢失。(Demo)array_map()
也可能适用,不需要通过引用进行修改。(Demo)55ooxyrt3#
使用ksort,它按键对数组排序
假设您的阵列是
$array