我想要比较的数组:
$original
和$duplicate
。
例如,这是我的原始文件:
print_r($original);
Array ( [0] => cat423 [1] => dog456 [2] => horse872 [3] => duck082 )
这是我的副本:
print_r($dublicate);
Array ( [0] => cat423 [1] => dug356 )
我将它们与array_diff
进行比较:
$result = array_diff($original, $dublicate);
我的结果:
Array ( [1] => dog456 [2] => horse872 [3] => duck082 )
到目前为止一切顺利,但我需要对不正确的值和完全缺失的值进行区分。这可能吗?
答案 0 :(得分:1)
一种方法是抓取整个original
数组,之后您将拥有两个数组missings
和duplicates
。
$original = array("cat423", "dog456", "horse872", "duck082");
$duplicate = array("cat423", "dug356");
$missings = $duplicates = array();
foreach ($original as $val) {
if (in_array($val, $duplicate))
$duplicates[] = $val;
else
$missings[] = $val;
}
如果你也需要这些键,你必须像这样改变foreach循环:
foreach ($original as $key=>$val) {
if (in_array($val, $duplicate))
$duplicates[] = array("key" => $key, "value" => $val);
else
$missings[] = array("key" => $key, "value" => $val);
}
答案 1 :(得分:1)
使用in_array功能
$original = array("cat423", "dog456", "horse872", "duck082");
$duplicate = array("cat423", "dug356");
foreach ($original as $item) {
if(in_array($item, $duplicate))
{
$dup[] = $item;
}
else
{
$miss[] = $item;
}
}
print_r($miss); #Array ( [0] => dog456 [1] => horse872 [2] => duck082 )
print_r($dup); #Array ( [0] => cat423 )