我试图测试两个数组是否包含相同的元素并且顺序相同。例如:
$a = ['id', 'name', 'age', 'gender'];
$b = ['id', 'age', 'name', 'gender'];
如何只提取不匹配的部分:
Expected: name, age
Found: age, name
答案 0 :(得分:1)
您可以使用array_diff_assoc()执行此操作,它可以解决两个数组之间的差异,并通过密钥检查来验证密钥是否相同:
$a = ['id', 'name', 'age', 'gender'];
$b = ['id', 'age', 'name', 'gender'];
$expected = array_diff_assoc($a, $b);
$actual = array_diff_assoc($b, $a);
echo 'Expected = ', implode(', ', $expected), PHP_EOL;
echo 'Actual = ', implode(', ', $actual), PHP_EOL;
答案 1 :(得分:0)
找出哪个元素不包含在另一个数组中使用array_diff()。
http://php.net/manual/en/function.array-diff.php
但这不会解决你的问题。您可以手动执行以下操作:
$temp = array();
if (count($array1) == count($array2) {
for($i = 0; $i < count($array1); $i++){
if ($array1[$i] != $array2[$i]) $temp[] = array("expected" => $array1[$i], "found" => $array2[$i];
}
}
return $temp;
$temp
将包含array("expected" => first value, "found" => second_value);
答案 2 :(得分:0)
这可能适合你
<?php
$a = ['id', 'name', 'age', 'gender'];
$b = ['id', 'age', 'name', 'gender'];
$error_a = array();
$error_b = array();
for ($i=0; $i < sizeof($a); $i++) {
if($a[$i]==$b[$i]){
//no error
}else{
array_push($error_a, $a[$i]);
array_push($error_b, $b[$i]);
}
}
var_dump($error_a);
var_dump($error_b);
?>