2012-04-06 5 views
0

Ich habe eine PHP-Datei, in der eine XML-Datei durch simplexml geladen wird und nach entsprechenden ID gesucht wird, alles funktioniert gut, aber wenn die ID mit dem angegebenen übereinstimmt, funktioniert es nicht, wenn ich beide Echo, werden sie angezeigt aber wenn ich if-Anweisung verwenden, um übereinstimmen gewohntkonnte Simplex Objekt und Variable nicht übereinstimmen?

sie übereinstimmen

hier ist mein pHP-Code

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

Ausgang ist

75 > 73 
75 > 74 
75 > 75 

aber es muss sein

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

Verwendung Versuch verwendet 'var_dump()' statt 'echo' –

Antwort

1

Es funktionierte, nachdem ich type casting

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

DANK

+0

Variable Dump zu sehen Tat simplexml eine simplexmlobject gibt, die, wenn Echo 'd erscheint gut, ist aber keine Zeichenkette und schlägt daher String-Vergleiche (oder int-Vergleiche) fehl. Der Tipp von webbandit hätte dir die gleichen Informationen gebracht. – mseancole

Verwandte Themen