code: public function equate($var1, $var2)
      {
          if ($var1 === $var2) {
              return true;
          }
          if (is_object($var1) || is_object($var2) || is_array($var1) || is_array($var2)) {
              $str1 = print_r($var1, true);
              $str2 = print_r($var2, true);
              return $str1 === $str2;
          }
          if (is_string($var1) || is_string($var2)) {
              return strcmp($var1, $var2) === 0;
          }
          if (is_numeric($var1) && is_numeric($var2)) {
              return $var1 == $var2;
          }
          
          return $var1 === $var2;
      }
docs: 引数 $var1 と $var2 が等価かどうか調べます.
  
  引数の少なくともいずれか一方がオブジェクトまたは配列の場合は
  print_r() の結果を比較します.
  (hashCode が print_r() の結果を使ってハッシュコードを生成するためです.)
  
  引数の少なくともいずれか一方が文字列の場合は両引数を文字列として比較します.
  引数が両方とも数値の場合は == で,
  それ以外の場合は === で比較した結果を返します.
  
  @param  mixed $var1
  @param  mixed $var2
  @return bool