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));
4

3 回答 3

3

您必须正确转换项目值,否则您会将 SimpleXMLElement 对象存储在数组中:

$arr[] = (string)$child->loc;
于 2013-09-02T06:40:08.800 回答
0

杰克回答后形成的解决方案。添加此代码以检查重复项。

if(count($arr) != count(array_unique($arr))){
      echo "Duplicates";
   }
于 2013-09-02T06:49:37.733 回答
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>
于 2013-09-02T07:30:41.653 回答