我在这里访问过类似的问题,但没有得到我想要的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之前。
答案 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