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.
prüfen diese https://stackoverflow.com/questions/20531967/comparing-2-objects-php – claudio
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. –
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. –