2017-12-15 8 views
1

Ich versuche, zwei Objekte wie diese zu vergleichen:Php: Objekt comparaison (einer von ihnen durch Webservice gesendet)

if($obj1==$obj2){ 
    ... 

Aber mein Vergleich immer false zurück!

$ obj1 ist ein Parameter meiner Funktion (aufgerufen über einen Webservice) vom Typ "MySoapObject".

$ obj2 ist ein Objekt vom Typ "MySoapObject", das von meiner Datenbank geladen wurde.

In meinem Test print_r meiner beiden Objekte dieses geben Sie mir:

stdClass Object 
(
    [establishment] => stdClass Object 
     (
      [f_establishment_id] => 4 
      [f_name] => MyEstablishment 
      [f_display_name] => v 
      [f_main_web_link] => 
      [f_contact] => 
      [f_country_code] => 
      [f_city] => 
      [f_zip_code] => 
      [f_postal_address] => 
      [f_default_language] => 
      [f_timezone] => 
      [f_cloud_synchronisation_action] => TO_SYNC 
     ) 

    [site_list] => Array 
     (
      [0] => stdClass Object 
       (
        [f_site_id] => Site1 
        [f_status] => TO_DISABLE 
        [f_name] => Site1 
       ) 

     ) 

) 

By the way, wenn ich versuche, dies:

if(print_r($obj1)==print_r($obj2)){ 
    ... 

Das Ergebnis ist wahr!

Haben Sie eine Vorstellung davon, wo das Problem sein könnte? Wie man es löst? Danke für Ihre Hilfe.

+0

prüfen diese https://stackoverflow.com/questions/20531967/comparing-2-objects-php – claudio

+1

FYI, Der Grund 'print_r ($ obj1) == print_r ($ obj2)' ist 'TRUE' ist, weil' print_r() '' TRUE' zurückgibt, es sei denn, Sie übergeben das Flag, das es anweist, eine Zeichenkette zurückzugeben. Sie vergleichen also im Wesentlichen 'TRUE == TRUE', was offensichtlich' TRUE' ist. –

+0

Haben Sie diese http://php.net/manual/en/language.oop5.object-comparison.php gelesen? Prüfen Sie, ob Ihre Objekte wirklich Instanzen derselben Klasse sind oder nicht. BTW: Ich bin mir ziemlich sicher, dass die Verwendung des Objektvergleichs für den Fall verschachtelter Objekte aufgrund der Rekursion keine gute Idee ist. –

Antwort

-1

für den Objektvergleich können Sie:

if($obj1===$obj2){ 
} 

In der Dokumentation http://php.net/manual/en/language.operators.comparison.php

+0

wenn '==' das wird nicht funktionieren – claudio

+0

== für Wert und === für Objektvergleich –

+0

Ich denke, er versucht, die Werte der Objekte und nicht die Typen zu vergleichen. Wo steht, dass === zum Objektvergleich dient? – claudio

Verwandte Themen