在数组中统计重复的值数量

3

使用以下代码计算值将没有结果添加到我的数组中。希望能得到任何关于我做错了什么的帮助,谢谢。

$xml=simplexml_load_file("sitemap.xml");

$arr = array();
foreach($xml->url as $child)
{
    if (isset($child->loc)) {
        echo "true";
        $arr[] = $child->loc;
    } else {
        echo "error";
        echo  $child->loc; 
    }        
}
print_r(array_count_values($arr));

这个额外的 ?> 是干什么用的? - Hanky Panky
我不好意思,之前误删了一段内容。 - Tonzkie
1
你能展示一下 var_dump($arr)var_dump(array_count_values($arr)) 吗? - Barmar
它是回显“true”还是“error”? - ChicagoRedSox
它正在显示所有正确的值并回显 true,只需要对它们进行计数。 - Tonzkie
显示剩余2条评论
3个回答

3
您需要正确地转换项目值,否则您将在数组中存储SimpleXMLElement对象:
$arr[] = (string)$child->loc;

0
可能期望的是这样的。
$xml=simplexml_load_file("sitemap.xml");

echo "<pre>";
var_dump($xml->url->loc[0]);
var_dump($xml->url->loc[1]);
var_dump($xml->url->loc[2]);

echo "</pre>";

$arr = array();

foreach($xml->url as $child)
{
    foreach($child as $tmp){    
        if (isset($tmp)) {
            echo "true";
            $arr[] = (String)$child->loc;
        } else {
            echo  "error<br/>";
            echo  $child->loc; 
        }    
    }    
}
print_r(array_count_values($arr));



<sites>
    <url>
        <loc>google.com</loc>
        <loc>google.com</loc>
        <loc>yahoo.com</loc>
    </url>
</sites>

0
在Jack的回答之后形成了解决方案。添加了此代码以检查重复项。
if(count($arr) != count(array_unique($arr))){
      echo "Duplicates";
   }

1
我猜那是调试代码,但如果 count($arr) 不等于 count(array_unique($arr)),那就意味着有重复的。 - ChicagoRedSox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接