重新排序array2,因此array1中的项目位于顶部

时间:2012-12-06 00:46:46

标签: php arrays

我有两个数组,一个是子集。我需要重新排序更大的数组,以便第一个数组中的所有项都在它的顶部。

array('c', 'e');
array('a', 'b', 'c', 'd', 'e', 'f', 'g');

我希望第二个数组看起来像这样:

array('c', 'e', 'a', 'b', 'd', 'f', 'g');

“c”和“e”位于其顶部。

3 个答案:

答案 0 :(得分:2)

如果另一个数组包含元素,您可以使用usort并向上移动元素:

e.g:

$a = array('c', 'e');
$b = array('a', 'b', 'c', 'd', 'e', 'f', 'g');

usort($b, function($x, $y) use($a) {
    return in_array($x, $a) ? -1 : 1;
});

这不会考虑$a的顺序,但会允许重复的元素(如果需要)。

答案 1 :(得分:0)

array_merge:http://php.net/manual/en/function.array-merge.php

$a1 = array('c', 'e');
$a2 = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
$am = array_merge($a1, $a2);

阅读要求后,这是正确的方法:

$a1 = array('c', 'e');
$a2 = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
$a2 = array_diff($a2, $a1);
$am = array_merge($a1, $a2);

答案 2 :(得分:0)

$a1 = array('c', 'e');
$a2 = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
$a3 = array_unique(array_merge($a1, $a2));