Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сравнение объектов/ == & ===/ SimpleXMLElement
 
 автор: lgar   (13.09.2009 в 16:59)   письмо автору
 
 

Невозможно завершить работу скрипта из-за несовпадения массивов, в которых содержаться объекты. Содержимое объектов одинаково. Отличаются они только цифрой после #. Как можно избавиться от этих объектов? Пробовал перевод из одного типа в др., но не помогло. Заменял $url1 == $url2 (который должен сравнивать содержимое объектов) на $url1 === $url2. Ещё беда в том, что в массиве не объект, а куча маленьких объектов, содержащих нужную строку (может массив, в котором строка).

array(6) { [0]=> object(SimpleXMLElement)#11 (1) { [0]=> string(157) "http://www.proxyprince.com/index.php" } [1]=> object(SimpleXMLElement)#6 (1) { [0]=> string(51) "http://dobreprogramy.pl/index.php?dz=12&m=11&r=2008" } [2]=> object(SimpleXMLElement)#5 (1) { [0]=> string(66) "http://www.thewebsqueeze.com/forum/lofiversion/index.php?t716.html" } [3]=> object(SimpleXMLElement)#4 (1) { [0]=> string(111) "http://www.lephpfacile.com/annuaire-rss/1-informations/2-actualites/21-actualite-php-mysql-nexen-net/page-3.php" } [4]=> object(SimpleXMLElement)#3 (1) { [0]=> string(87) "http://www.joomlaportal.de/programmiersprachen-allgemein/188224-php-editor-gesucht.html" } [5]=> object(SimpleXMLElement)#7 (1) { [0]=> string(51) "http://www.mister-wong.de/user/smile/erweiterungen/" } }


array(6) { [0]=> object(SimpleXMLElement)#21 (1) { [0]=> string(157) "http://www.proxyprince.com/index.php" } [1]=> object(SimpleXMLElement)#16 (1) { [0]=> string(51) "http://dobreprogramy.pl/index.php?dz=12&m=11&r=2008" } [2]=> object(SimpleXMLElement)#15 (1) { [0]=> string(66) "http://www.thewebsqueeze.com/forum/lofiversion/index.php?t716.html" } [3]=> object(SimpleXMLElement)#14 (1) { [0]=> string(111) "http://www.lephpfacile.com/annuaire-rss/1-informations/2-actualites/21-actualite-php-mysql-nexen-net/page-3.php" } [4]=> object(SimpleXMLElement)#13 (1) { [0]=> string(87) "http://www.joomlaportal.de/programmiersprachen-allgemein/188224-php-editor-gesucht.html" } [5]=> object(SimpleXMLElement)#17 (1) { [0]=> string(51) "http://www.mister-wong.de/user/smile/erweiterungen/" } } 





<?php 
$url1 
'0';
function 
get_xmldoc($data)
{
  
$ch curl_init();    
  
curl_setopt($chCURLOPT_URL"http://xmlsearch.yandex.ru/xmlsearch");
  
curl_setopt($chCURLOPT_HTTPHEADER, Array("Content-Type: application/xml"));
  
curl_setopt($chCURLOPT_HTTPHEADER, Array("Accept: application/xml"));
  
curl_setopt($chCURLOPT_RETURNTRANSFER1);
  
curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_BASIC);
  
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
  
curl_setopt($chCURLOPT_POSTFIELDS$data);
  
curl_setopt($chCURLOPT_POSTTRUE);    
  
$response curl_exec($ch);
  
curl_close($ch);
  return 
$response;
}
for (
$page 0$page 20$page++)
{
    print 
"$page<br />";
    
// XML запрос
    
$data = <<<DATA
<?xml version='1.0' encoding='utf-8'?>
<request>
    <query>php xdebug zend eclipse pdt netbeans</query>
    <page>
$page</page>
    <maxpassages>0</maxpassages>
    <groupings>
        <groupby attr='d' mode='deep' groups-on-page='10' docs-in-group='1' curcateg='-1'/>
    </groupings>
</request>
DATA;
  
$response get_xmldoc($data);
  
$xml simplexml_load_string($response);
  echo 
"<pre>".var_dump($url1)."</pre><br />";
  
$urls $xml->xpath("response/results/grouping/group/doc/url");
  
/*foreach ($urls as $url)
  {
    print "$url<br />";
  }*/
  
$url2 $urls;
  echo 
"<br /><pre>".var_dump($url2)."END</pre>";
  if (
$url1 === $url2
  {
    exit(
'done');
  }
  else 
  {
    
$url1 $url2;
  }
}  
?>

  Ответить  
 
 автор: cheops   (13.09.2009 в 17:13)   письмо автору
 
   для: lgar   (13.09.2009 в 16:59)
 

Попробуйте привести объект к массиву и сравнивать массивы.

  Ответить  
 
 автор: lgar   (13.09.2009 в 18:05)   письмо автору
 
   для: cheops   (13.09.2009 в 17:13)
 

Спасибо за ответ, но можно на примере каком - нибудь показать как привести объект к массиву, потому что тут я не соображу как через массив попасть к этому объекту.


foreach ($urls as $url)
  {
    $links[] = (string)$url;
  }

  Ответить  
 
 автор: cheops   (13.09.2009 в 18:13)   письмо автору
 
   для: lgar   (13.09.2009 в 18:05)
 

Можно воспользоваться конструкцией (array)
foreach ($urls as $url) 
  { 
    $links[] = (array)$url; 
  }

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования