2013-09-02 3 views
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)); 
+0

array_sum()? ... –

+0

Что это дополнительное '?>' Для? –

+0

Мой плохо удалил контент раньше. – Tonzkie

ответ

3

Вы должны отбрасывать значения записи правильно, в противном случае вы будете хранить объекты SimpleXmlElement в массиве:

$arr[] = (string)$child->loc; 
0

раствора, образованного после ответа домкрата. Добавлен этот код для проверки дубликатов.

if(count($arr) != count(array_unique($arr))){ 
     echo "Duplicates"; 
    } 
+1

Я думаю, что это отладочный код, но если count ($ arr) не равен count (array_unique ($ arr)), это означает, что там _are_ дублирует. – ChicagoRedSox

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> 
Смежные вопросы