PHP:显示元素无序时两个数组中的差异

PHP:显示元素无序时两个数组中的差异,php,arrays,Php,Arrays,我试图测试两个数组是否包含相同的元素,并且顺序相同。例如: $a = ['id', 'name', 'age', 'gender']; $b = ['id', 'age', 'name', 'gender']; 如何仅提取不匹配的部分: Expected: name, age Found: age, name 要找出哪些元素不包含在另一个数组中,请使用array_diff() 但这并不能解决你的问题。您可以手动执行以下操作: $temp = array(); if (count($arra

我试图测试两个数组是否包含相同的元素,并且顺序相同。例如:

$a = ['id', 'name', 'age', 'gender'];
$b = ['id', 'age', 'name', 'gender'];
如何仅提取不匹配的部分:

Expected: name, age
Found: age, name

要找出哪些元素不包含在另一个数组中,请使用array_diff()

但这并不能解决你的问题。您可以手动执行以下操作:

$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();
如果(计数($array1)=计数($array2){
对于($i=0;$i$array1[$i],“找到”=>$array2[$i];
}
}
返回$temp;

$temp
将以
数组的形式包含差异(“预期的”=>第一个值,“发现的”=>第二个值);

这可能对您有用

<?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);

?>

您可以使用它来执行此操作,它计算出两个数组之间的差异,并进行键检查以验证键是否相同:

$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;

您使用了什么代码?-我还没有开始,否则我会发布代码;)数组_diff_assoc似乎工作得很好,谢谢Mark。数组_diff_assoc()=使用附加索引复选标记计算数组的差异,如果您添加我将接受的答案。非常感谢。非常完美,谢谢。我感觉可能有一个现有的php函数可以使用,我就是找不到:)