--TEST--
comparing different variables for equality
--SKIPIF--
<?php if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only"); ?>
--FILE--
<?php

class test {
}

$a = array(
	array(1,2,3),
	"",
	1,
	2.5,
	0,
	"string",
	"123",
	"2.5",
	NULL,
	true,
	false,
	new stdclass,
	new stdclass,
	new test,
	array(),
	-PHP_INT_MAX-1,
	(string)(-PHP_INT_MAX-1),
);

$var_cnt = count($a);

function my_dump($var) {
	ob_start();
	var_dump($var);
	$buf = ob_get_clean();
	echo str_replace("\n", "", $buf);
}

foreach($a as $var) {
	for ($i = 0; $i < $var_cnt; $i++) {
		my_dump($var);
		echo ($var == $a[$i]) ? " == " : " != ";
		my_dump($a[$i]);
		echo "\n";
	}
}	

echo "Done\n";
?>
--EXPECTF--	
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} == array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != string(0) ""
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != int(1)
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != float(2.5)
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != int(0)
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != string(6) "string"
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != string(3) "123"
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != string(3) "2.5"
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != NULL
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} == bool(true)
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != bool(false)
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != object(stdClass)#1 (0) {}
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != object(stdClass)#2 (0) {}
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != object(test)#3 (0) {}
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != array(0) {}
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != int(-2147483648)
array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)} != string(11) "-2147483648"
string(0) "" != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
string(0) "" == string(0) ""
string(0) "" != int(1)
string(0) "" != float(2.5)
string(0) "" == int(0)
string(0) "" != string(6) "string"
string(0) "" != string(3) "123"
string(0) "" != string(3) "2.5"
string(0) "" == NULL
string(0) "" != bool(true)
string(0) "" == bool(false)
string(0) "" != object(stdClass)#1 (0) {}
string(0) "" != object(stdClass)#2 (0) {}
string(0) "" != object(test)#3 (0) {}
string(0) "" != array(0) {}
string(0) "" != int(-2147483648)
string(0) "" != string(11) "-2147483648"
int(1) != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
int(1) != string(0) ""
int(1) == int(1)
int(1) != float(2.5)
int(1) != int(0)
int(1) != string(6) "string"
int(1) != string(3) "123"
int(1) != string(3) "2.5"
int(1) != NULL
int(1) == bool(true)
int(1) != bool(false)
int(1)
Notice: Object of class stdClass could not be converted to int in %s on line %d
 == object(stdClass)#1 (0) {}
int(1)
Notice: Object of class stdClass could not be converted to int in %s on line %d
 == object(stdClass)#2 (0) {}
int(1)
Notice: Object of class test could not be converted to int in %s on line %d
 == object(test)#3 (0) {}
int(1) != array(0) {}
int(1) != int(-2147483648)
int(1) != string(11) "-2147483648"
float(2.5) != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
float(2.5) != string(0) ""
float(2.5) != int(1)
float(2.5) == float(2.5)
float(2.5) != int(0)
float(2.5) != string(6) "string"
float(2.5) != string(3) "123"
float(2.5) == string(3) "2.5"
float(2.5) != NULL
float(2.5) == bool(true)
float(2.5) != bool(false)
float(2.5)
Notice: Object of class stdClass could not be converted to double in %s on line %d
 != object(stdClass)#1 (0) {}
float(2.5)
Notice: Object of class stdClass could not be converted to double in %s on line %d
 != object(stdClass)#2 (0) {}
float(2.5)
Notice: Object of class test could not be converted to double in %s on line %d
 != object(test)#3 (0) {}
float(2.5) != array(0) {}
float(2.5) != int(-2147483648)
float(2.5) != string(11) "-2147483648"
int(0) != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
int(0) == string(0) ""
int(0) != int(1)
int(0) != float(2.5)
int(0) == int(0)
int(0) == string(6) "string"
int(0) != string(3) "123"
int(0) != string(3) "2.5"
int(0) == NULL
int(0) != bool(true)
int(0) == bool(false)
int(0)
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != object(stdClass)#1 (0) {}
int(0)
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != object(stdClass)#2 (0) {}
int(0)
Notice: Object of class test could not be converted to int in %s on line %d
 != object(test)#3 (0) {}
int(0) != array(0) {}
int(0) != int(-2147483648)
int(0) != string(11) "-2147483648"
string(6) "string" != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
string(6) "string" != string(0) ""
string(6) "string" != int(1)
string(6) "string" != float(2.5)
string(6) "string" == int(0)
string(6) "string" == string(6) "string"
string(6) "string" != string(3) "123"
string(6) "string" != string(3) "2.5"
string(6) "string" != NULL
string(6) "string" == bool(true)
string(6) "string" != bool(false)
string(6) "string" != object(stdClass)#1 (0) {}
string(6) "string" != object(stdClass)#2 (0) {}
string(6) "string" != object(test)#3 (0) {}
string(6) "string" != array(0) {}
string(6) "string" != int(-2147483648)
string(6) "string" != string(11) "-2147483648"
string(3) "123" != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
string(3) "123" != string(0) ""
string(3) "123" != int(1)
string(3) "123" != float(2.5)
string(3) "123" != int(0)
string(3) "123" != string(6) "string"
string(3) "123" == string(3) "123"
string(3) "123" != string(3) "2.5"
string(3) "123" != NULL
string(3) "123" == bool(true)
string(3) "123" != bool(false)
string(3) "123" != object(stdClass)#1 (0) {}
string(3) "123" != object(stdClass)#2 (0) {}
string(3) "123" != object(test)#3 (0) {}
string(3) "123" != array(0) {}
string(3) "123" != int(-2147483648)
string(3) "123" != string(11) "-2147483648"
string(3) "2.5" != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
string(3) "2.5" != string(0) ""
string(3) "2.5" != int(1)
string(3) "2.5" == float(2.5)
string(3) "2.5" != int(0)
string(3) "2.5" != string(6) "string"
string(3) "2.5" != string(3) "123"
string(3) "2.5" == string(3) "2.5"
string(3) "2.5" != NULL
string(3) "2.5" == bool(true)
string(3) "2.5" != bool(false)
string(3) "2.5" != object(stdClass)#1 (0) {}
string(3) "2.5" != object(stdClass)#2 (0) {}
string(3) "2.5" != object(test)#3 (0) {}
string(3) "2.5" != array(0) {}
string(3) "2.5" != int(-2147483648)
string(3) "2.5" != string(11) "-2147483648"
NULL != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
NULL == string(0) ""
NULL != int(1)
NULL != float(2.5)
NULL == int(0)
NULL != string(6) "string"
NULL != string(3) "123"
NULL != string(3) "2.5"
NULL == NULL
NULL != bool(true)
NULL == bool(false)
NULL != object(stdClass)#1 (0) {}
NULL != object(stdClass)#2 (0) {}
NULL != object(test)#3 (0) {}
NULL == array(0) {}
NULL != int(-2147483648)
NULL != string(11) "-2147483648"
bool(true) == array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
bool(true) != string(0) ""
bool(true) == int(1)
bool(true) == float(2.5)
bool(true) != int(0)
bool(true) == string(6) "string"
bool(true) == string(3) "123"
bool(true) == string(3) "2.5"
bool(true) != NULL
bool(true) == bool(true)
bool(true) != bool(false)
bool(true) == object(stdClass)#1 (0) {}
bool(true) == object(stdClass)#2 (0) {}
bool(true) == object(test)#3 (0) {}
bool(true) != array(0) {}
bool(true) == int(-2147483648)
bool(true) == string(11) "-2147483648"
bool(false) != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
bool(false) == string(0) ""
bool(false) != int(1)
bool(false) != float(2.5)
bool(false) == int(0)
bool(false) != string(6) "string"
bool(false) != string(3) "123"
bool(false) != string(3) "2.5"
bool(false) == NULL
bool(false) != bool(true)
bool(false) == bool(false)
bool(false) != object(stdClass)#1 (0) {}
bool(false) != object(stdClass)#2 (0) {}
bool(false) != object(test)#3 (0) {}
bool(false) == array(0) {}
bool(false) != int(-2147483648)
bool(false) != string(11) "-2147483648"
object(stdClass)#1 (0) {} != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
object(stdClass)#1 (0) {} != string(0) ""
object(stdClass)#1 (0) {}
Notice: Object of class stdClass could not be converted to int in %s on line %d
 == int(1)
object(stdClass)#1 (0) {}
Notice: Object of class stdClass could not be converted to double in %s on line %d
 != float(2.5)
object(stdClass)#1 (0) {}
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != int(0)
object(stdClass)#1 (0) {} != string(6) "string"
object(stdClass)#1 (0) {} != string(3) "123"
object(stdClass)#1 (0) {} != string(3) "2.5"
object(stdClass)#1 (0) {} != NULL
object(stdClass)#1 (0) {} == bool(true)
object(stdClass)#1 (0) {} != bool(false)
object(stdClass)#1 (0) {} == object(stdClass)#1 (0) {}
object(stdClass)#1 (0) {} == object(stdClass)#2 (0) {}
object(stdClass)#1 (0) {} != object(test)#3 (0) {}
object(stdClass)#1 (0) {} != array(0) {}
object(stdClass)#1 (0) {}
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != int(-2147483648)
object(stdClass)#1 (0) {} != string(11) "-2147483648"
object(stdClass)#2 (0) {} != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
object(stdClass)#2 (0) {} != string(0) ""
object(stdClass)#2 (0) {}
Notice: Object of class stdClass could not be converted to int in %s on line %d
 == int(1)
object(stdClass)#2 (0) {}
Notice: Object of class stdClass could not be converted to double in %s on line %d
 != float(2.5)
object(stdClass)#2 (0) {}
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != int(0)
object(stdClass)#2 (0) {} != string(6) "string"
object(stdClass)#2 (0) {} != string(3) "123"
object(stdClass)#2 (0) {} != string(3) "2.5"
object(stdClass)#2 (0) {} != NULL
object(stdClass)#2 (0) {} == bool(true)
object(stdClass)#2 (0) {} != bool(false)
object(stdClass)#2 (0) {} == object(stdClass)#1 (0) {}
object(stdClass)#2 (0) {} == object(stdClass)#2 (0) {}
object(stdClass)#2 (0) {} != object(test)#3 (0) {}
object(stdClass)#2 (0) {} != array(0) {}
object(stdClass)#2 (0) {}
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != int(-2147483648)
object(stdClass)#2 (0) {} != string(11) "-2147483648"
object(test)#3 (0) {} != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
object(test)#3 (0) {} != string(0) ""
object(test)#3 (0) {}
Notice: Object of class test could not be converted to int in %s on line %d
 == int(1)
object(test)#3 (0) {}
Notice: Object of class test could not be converted to double in %s on line %d
 != float(2.5)
object(test)#3 (0) {}
Notice: Object of class test could not be converted to int in %s on line %d
 != int(0)
object(test)#3 (0) {} != string(6) "string"
object(test)#3 (0) {} != string(3) "123"
object(test)#3 (0) {} != string(3) "2.5"
object(test)#3 (0) {} != NULL
object(test)#3 (0) {} == bool(true)
object(test)#3 (0) {} != bool(false)
object(test)#3 (0) {} != object(stdClass)#1 (0) {}
object(test)#3 (0) {} != object(stdClass)#2 (0) {}
object(test)#3 (0) {} == object(test)#3 (0) {}
object(test)#3 (0) {} != array(0) {}
object(test)#3 (0) {}
Notice: Object of class test could not be converted to int in %s on line %d
 != int(-2147483648)
object(test)#3 (0) {} != string(11) "-2147483648"
array(0) {} != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
array(0) {} != string(0) ""
array(0) {} != int(1)
array(0) {} != float(2.5)
array(0) {} != int(0)
array(0) {} != string(6) "string"
array(0) {} != string(3) "123"
array(0) {} != string(3) "2.5"
array(0) {} == NULL
array(0) {} != bool(true)
array(0) {} == bool(false)
array(0) {} != object(stdClass)#1 (0) {}
array(0) {} != object(stdClass)#2 (0) {}
array(0) {} != object(test)#3 (0) {}
array(0) {} == array(0) {}
array(0) {} != int(-2147483648)
array(0) {} != string(11) "-2147483648"
int(-2147483648) != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
int(-2147483648) != string(0) ""
int(-2147483648) != int(1)
int(-2147483648) != float(2.5)
int(-2147483648) != int(0)
int(-2147483648) != string(6) "string"
int(-2147483648) != string(3) "123"
int(-2147483648) != string(3) "2.5"
int(-2147483648) != NULL
int(-2147483648) == bool(true)
int(-2147483648) != bool(false)
int(-2147483648)
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != object(stdClass)#1 (0) {}
int(-2147483648)
Notice: Object of class stdClass could not be converted to int in %s on line %d
 != object(stdClass)#2 (0) {}
int(-2147483648)
Notice: Object of class test could not be converted to int in %s on line %d
 != object(test)#3 (0) {}
int(-2147483648) != array(0) {}
int(-2147483648) == int(-2147483648)
int(-2147483648) == string(11) "-2147483648"
string(11) "-2147483648" != array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  int(3)}
string(11) "-2147483648" != string(0) ""
string(11) "-2147483648" != int(1)
string(11) "-2147483648" != float(2.5)
string(11) "-2147483648" != int(0)
string(11) "-2147483648" != string(6) "string"
string(11) "-2147483648" != string(3) "123"
string(11) "-2147483648" != string(3) "2.5"
string(11) "-2147483648" != NULL
string(11) "-2147483648" == bool(true)
string(11) "-2147483648" != bool(false)
string(11) "-2147483648" != object(stdClass)#1 (0) {}
string(11) "-2147483648" != object(stdClass)#2 (0) {}
string(11) "-2147483648" != object(test)#3 (0) {}
string(11) "-2147483648" != array(0) {}
string(11) "-2147483648" == int(-2147483648)
string(11) "-2147483648" == string(11) "-2147483648"
Done
