mirror of
https://github.com/php/php-src.git
synced 2024-12-03 23:05:57 +08:00
acbf7802af
RFC: https://wiki.php.net/rfc/string_to_number_comparison Closes GH-3886.
390 lines
14 KiB
PHP
390 lines
14 KiB
PHP
--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 float in %s on line %d
|
|
!= object(stdClass)#1 (0) {}
|
|
float(2.5)
|
|
Notice: Object of class stdClass could not be converted to float in %s on line %d
|
|
!= object(stdClass)#2 (0) {}
|
|
float(2.5)
|
|
Notice: Object of class test could not be converted to float 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 float 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 float 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 float 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
|