ChrisB: Nodes vergleichen

Beitrag lesen

Hi,

Nun liefern folgende Abfragen die selben Ergebnisse:

if (in_array($node->nodeName, $felder)) {

und

foreach($felder as $feld) {

if($node->isSameNode($feld)) {


>   
>   
> Hätte gedacht, nur das zweite Beispiel ist korrekt. Beim ersten schaut man doch nach, ob ein String in einem Array mit Objekten ist ... ? Warum wird auch beim ersten Beispiel das richtige gefunden?  
  
Dass in\_array zwingend Stringvergleiche macht, finde ich im Manual nicht explizit erwähnt.  
  
Aber wenn man davon ausgeht, dann ist klar, dass ein Objekt erst mal in einen String umgewandelt werden muss, bevor es verglichen werden kann.  
Und dabei kommt es dann darauf an, ob/wie die magische Methode [__toString](http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring) implementiert ist.  
Wenn die bei DOMNodes bspw. nur den Textinhalt eines Knotens als String zurückliefert - dann können mehrere verschiedene Nodes „gleich“ sein; bzw. genauso gut kann sich in einem ungünstigen Test-Case herausstellen, dass es damit vermeintlich wie gewünscht funktioniert.  
  
MfG ChrisB  
  

-- 
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?