0

我有一个包含标签的 XML 文件<image_file_name>,这个标签重复,偶尔这个值是重复的,我试图找到的唯一实例值的总数<image_file_name>

$simpleXML = simplexml_load_file("stock_availability.xml");

$uniqueProducts = array();

foreach ($simpleXML->product as $product) {
    $image_file_name = $product->image_file_name;
    if(in_array($image_file_name, $uniqueProducts)) {
        echo 1;
    } else {
        $uniqueProducts[] = $image_file_name;
        echo 2;
    }
$image_file_name = null;
}

echo count($uniqueProducts);

返回非唯一实例的count()实例总数。image_file_name

2也是连续回响,1从不回响。

4

1 回答 1

0

我盯着你的代码看了几分钟,看不出问题。我认为您使用了 print_r($uniqueProducts) 并在输出中发现了重复项。

您是否检查了其他重复条目中的空格或大小写差异?尝试使用一些标准化 - 例如使用 strtoupper(trim()) 和引号。

例如:

$simpleXML = simplexml_load_file("stock_availability.xml");

$uniqueProducts = array();

foreach ($simpleXML->product as $product) {
    $image_file_name = $product->image_file_name;
    $dup_check=strtoupper(trim($image_file_name));
    if(in_array("$dup_check", $uniqueProducts)) {
        echo 1;
    } else {
        $uniqueProducts[] = "$dup_check";
        echo 2;
    }
$image_file_name = null;
}

print_r($uniqueProducts);
echo "<br>".count($uniqueProducts);

看看这是否有帮助。

于 2013-07-06T20:57:31.943 回答