比较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