2017-12-15 51 views
1

PHPの:オブジェクトcomparaison(Webサービスを介して送信され、それらの1つ)私はこのような2つのオブジェクトを比較しようとしている

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

しかし、私の比較は常にfalseを返します!

$ obj1は、 "MySoapObject"タイプの(Webサービスを通じて呼び出される)私の関数のパラメータです。

$ obj2は、私のデータベースからロードされるタイプ "MySoapObject"のオブジェクトです。

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

結果が真である:私はこれをしようとした場合、ところで

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で

問題がどこで発生する可能性がありますか?どのようにそれを解決するには? ご協力いただきありがとうございます。あなたが使用できるオブジェクト比較のため

+0

これをチェックしてくださいhttps://stackoverflow.com/questions/20531967/comparing-2-objects-php – claudio

+1

FYI、 '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

関連する問題