2017-12-15 9 views
1

:PHP : 객체 comparaison (웹 서비스를 통해 전송 그들 중 하나)이 같은 두 개체를 비교하기 위해 노력하고있어

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

하지만 내 비교 항상 false를 반환!

$ obj1은 "MySoapObject"유형의 (Webservice를 통해 호출 된) 내 기능의 매개 변수입니다.

$ obj2는 내 데이터베이스에서로드 된 "MySoapObject"유형의 개체입니다. 내가하려고하면 그런데

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 
       ) 

     ) 

) 

,이 : 내 두 개체의 내 테스트에서 print_r에서

나에게이 줄

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

결과는 true가됩니다!

어디에서 문제가 될 수 있는지 생각해보십시오. 그것을 해결하는 방법? 도움 주셔서 감사합니다.

+0

확인 참고로이 https://stackoverflow.com/questions/20531967/comparing-2-objects-php – claudio

+1

, 'print_r ($ obj1) == print_r ($ obj2)'가'TRUE' 인 이유는'print_r()'이 문자열을 반환하라는 플래그를 전달하지 않으면'TRUE'를 반환하기 때문입니다. 그래서 당신은 본질적으로'TRUE == TRUE'를 비교하고 있습니다. 이것은 분명히 TRUE입니다. –

+0

http://php.net/manual/en/language.oop5.object-comparison.php을 읽으셨습니까? 두 개체가 모두 같은 클래스의 인스턴스인지 확인합니다. BTW : 중첩 된 개체가있는 경우 개체 비교를 사용하면 재귀 때문에 좋은 아이디어가 아닙니다. –

답변

-1

객체 비교를 위해 사용할 수 :

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

확인 문서 http://php.net/manual/en/language.operators.comparison.php

+0

만약'=='이 작동하지 않는다면 – claudio

+0

== 값과 === 객체 비교를 위해서 –

+0

나는 그가 객체의 값과 타입을 비교하려고 시도하고 있다고 생각한다. === 객체 비교를위한 곳은 어디인가요? – claudio

관련 문제