我知道这绝对是一个糟糕的设计,但此时此刻,这是解决这个问题的唯一方法。
我有两个数组。一个填充字符串值,第二个填充整数,例如:
$array01 = array("apple", "bannana", "orange", "plum", "kiwi", "kiwi");
$array02 = array(2, 4, 3, 2, 1, 2);
值彼此相关联。
apple - 2, bannana - 4, orange - 3, plum - 2, kiwi - 1, kiwi - 2.
如图所示,每个数组中的值可能重复(我无法删除冗余)。
我需要按字母升序对第一个数组进行排序 - 但正如您已经知道的那样 - 我需要与第一个数组一起摇动第二个数组,以便对它进行排序,因此值将在排序后匹配。
我的问题:有没有一种简单的方法可以做到这一点?或者我只需要编写自己的algorhytm?请注意,我不能使用任何外部库。
提前致谢!
答案 0 :(得分:3)
我使用array_multisort
。对于您的情况,由于SORT_ASC
是默认值:
array_multisort($array01, $array02);
如果你可以处理不同的阵列结构(无法抗拒):
array_multisort(array_column($result = array_map(null, $array01, $array02), 0), $result);
结果:
Array
(
[0] => Array
(
[0] => apple
[1] => 2
)
[1] => Array
(
[0] => bannana
[1] => 4
)
[2] => Array
(
[0] => kiwi
[1] => 1
)
[3] => Array
(
[0] => kiwi
[1] => 2
)
[4] => Array
(
[0] => orange
[1] => 3
)
[5] => Array
(
[0] => plum
[1] => 2
)
)
答案 1 :(得分:0)
最简单的方法是将值作为值对放入数组中。然后对值对的字符串部分进行排序。整数部分将保留相同的字符串部分,因为您将它们配对。