两个依赖数组,需要按第一个元素排序

时间:2015-03-03 22:07:21

标签: php arrays sorting

我知道这绝对是一个糟糕的设计,但此时此刻,这是解决这个问题的唯一方法。

我有两个数组。一个填充字符串值,第二个填充整数,例如:

$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?请注意,我不能使用任何外部库。

提前致谢!

2 个答案:

答案 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)

最简单的方法是将值作为值对放入数组中。然后对值对的字符串部分进行排序。整数部分将保留相同的字符串部分,因为您将它们配对。