2012-04-06 3 views
0

У меня есть файл php, в котором xml-файл загружается через simplexml и выполняется поиск соответствующего идентификатора, все работает нормально, но при сопоставлении идентификатора с данным, он не работает, если я их эхо их отображаю, они отображаются но если я использую, если заявление, чтобы соответствовать они не будут соответствоватьне может соответствовать объекту и переменной simplexml?

здесь мой PHP код

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

$cat_xml= simplexml_load_file('http://artstack.com/sites/77/site_categories.xml'); 
$product_xml= simplexml_load_file('http://artstack.com/sites/77/site_products.xml'); 



function getcatid($product_name,$product_xml){ 
    foreach($product_xml as $product){ 
     if($product){ 
      if($product_name==$product->url){ 
       return $product->cat_id; 
      } 
     } 
    } 
} 

function getcat($cat_id,$cat_xml){ 
    foreach($cat_xml as $cat){ 
     if($cat){ 
      if($cat_id==$cat->id){ 
       echo $cat['name']; 
      } 
      else{ 
       if(isset($cat->category)){ 
        //sub cat 
        foreach($cat->category as $subcat){ 
         if($subcat){ 
          echo $cat_id." > ".$subcat->id."<br>"; 
          if($cat_id==$subcat->id){ 
           echo $cat_id." > ".$subcat->id."<br>"; 
           exit; 
          } 
         } 
        } 
       } 
      } 
     }  
    } 
} 

getcat(getcatid($_GET['pro'],$product_xml),$cat_xml); 
?> 

Выход

75 > 73 
75 > 74 
75 > 75 

, но он должен быть

75 > 73 
75 > 74 
75 > 75 
75 > 75 
+2

попробовать 'var_dump()' вместо 'echo' видеть переменную свалка –

ответ

1

Он работал после того, как я использовал кастинг типа

if(intval($cat_id)==intval($subcat->id)){ 

БЛАГОДАРЯ

использование
+0

Действительно, SimpleXML возвращает simplexmlobject, что, когда эхо 'd отображается отлично, но не является строкой и, следовательно, не выполняет сравнения строк (или int сравнения). Совет webbandit получил бы вам ту же информацию. – mseancole

Смежные вопросы