PHP-Sort数组基于另一个数组

时间:2014-02-03 16:24:08

标签: php arrays

我在这里访问过类似的问题,但没有得到我想要的PHP。假设我有2个阵列。所有检查都应不区分大小写。假设Field0与field0相同或者fiEld1与Field1相同。

array1 is array(
"0"=>"field0",
"1"=>"field1",
"2"=>"field2",
"3"=>"field3",
);

array2 is array(
"0"=>"field3",
"1"=>"field2",
"2"=>"field0",
"3"=>"field1",
"4"=>"field6",
"5"=>"field5",
);

现在我希望array2基于array1进行排序,如下所示:

array2 is array(
"0"=>"field0",
"1"=>"field1",
"2"=>"field2",
"3"=>"field3",
"4"=>"field6",
"5"=>"field5",
);

看这里array1有4个元素,所以array2应该基于array1的4个元素进行排序,rest2元素(array2的索引4,5)应该在array2之前。

3 个答案:

答案 0 :(得分:2)

尝试array_intersect结合array_diff

<?php
$array1 = array(
    "0"=>"field0",
    "1"=>"field1",
    "2"=>"field2",
    "3"=>"field3",
);

$array2 = array(
    "0"=>"field3",
    "1"=>"field2",
    "2"=>"field0",
    "3"=>"field1",
    "4"=>"field6",
    "5"=>"field5",
);


$array3 = array_merge(
    array_intersect($array1, $array2), 
    array_diff($array2, $array1)
);

var_dump($array3);

<强>更新

对于不区分大小写的方法,请使用array_map来保证两个数组中的所有条目都是低级的:

$array3 = array_map('strtolower', $array1);
$array4 = array_map('strtolower', $array2);

$array5 = array_merge(
    array_intersect($array3, $array4), 
    array_diff($array4, $array3)
);

var_dump($array5);

答案 1 :(得分:1)

假设数组2总是大于数组1:

$array2 = array_merge($array1, array_diff($array2, $array1));

答案 2 :(得分:-2)

这很简单:

$array = $array1 + $array2