比较2个数组与差异的重复值

我有2个数组进行比较,我使用array_diff来计算列的差异,如下所示:

 //array1 is as static array I have created to validate the sheet columns $array1 = array('Category','Subcategory','Unknown','Age','0-9','Unknown','Region','Zone'); // array2 is coming dynamically from excel sheet columns so user can change the names $array2 = array('Category','Subcategory','Unknowns','Age','0-9','Unknown','Region'); $diff = array_diff($array1,$array2); $columnNames = implode(',',$diff); if(!$diff){ return true; } else{ echo 'Some columns are missing:'. $columnNames ; } 

输出: Zone

预期输出: Zone, Unknowns

如果Unknown列未更改,上面的代码工作正常。 我知道array_diff将只检查第一个数组,并比较下一个数组中存在的值。 但是,我想比较这些数组,并显示用户一些消息,一些列丢失,他们的名字。 所以,在这里,如果其中一列被改为excel表中的Unknowns (即array2那么它应该显示错误消息。 Some columns are missing: Zone, Unknowns

只需在PHP中使用array_diff_assoc函数即可:

  //array1 is as static array I have created to validate the sheet columns $array1 = array('Category','Subcategory','Unknown','Age','0-9','Unknown','Region','Zone'); // array2 is coming dynamically from excel sheet columns so user can change the names $array2 = array('Category','Subcategory','Unknowns','Age','0-9','Unknown','Region'); $diff = array_diff_assoc($array1,$array2); $columnNames = implode(',',$diff); echo $columnNames; 

为了您的参考去这个网站http://php.net/manual/en/function.array-diff-assoc.php

您可以从两个数组的联合中将两个数组的交集进行子交换。 现场演示

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

试试这个代码

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

参考: https : //stackoverflow.com/a/16356205/4895810