PHP - 检查数组中的重复值

时间:2014-03-17 23:56:17

标签: php xml arrays

通过拉取XML值(使用simplexml_load_file方法)和foreach循环来插入此数组中的值。

$skuArray(2, 4, 3, 7, 7, 4, 1, 7, 9);

填充数组后,我需要检查数组中是否存在任何重复值(在本例中为IE,7和4)。 Product-> sku在下面的foreach循环中包含skuArray值(来自XML文件)。以下代码不起作用。有什么建议?谢谢!

foreach($XMLproducts->product as $Product) {
if (in_array($Product->sku, $skuArray, > 1) {
// execute code
}
}

3 个答案:

答案 0 :(得分:0)

使用array_count_values()获取值发生的次数,然后检查它是否多于一个

$skuArray = array(2, 4, 3, 7, 7, 4, 1, 7, 9);
$dupes = array_count_values($skuArray);    
foreach($XMLproducts->product as $Product) {
  if ($dupes[$Product->sku] > 1) {
    // execute code
   }
}

答案 1 :(得分:0)

如果您需要删除重复项,则可以使用array_unique

<?php
$input = array(4, 4, 3, 4, 3, 3);
$result = array_unique($input);
// $result = array(4, 3)
?>

如果您只需要检查是否有重复项,那么您可以使用array_count_values执行此操作:

<?php
$input = array(2, 4, 3, 7, 7, 4, 1, 7, 9);
$counts = array_count_values($input);
$duplicates = array();
foreach($counts as $v => $count){
    if($count > 1)
        $duplicates[] = $v;
}

然后你将得到一个带有重复值的数组$duplicates

来源: Php check duplicate values in an array

答案 2 :(得分:0)

您的代码有拼写错误:

if (in_array($Product->sku, $skuArray, > 1) {

in_array期望第一个参数是针,但你提到&#34; Product-&gt; sku包含skuArray值&#34;,无论如何,它应该是这样的:

if (in_array($Product->sku, $skuArray)) {