Simple! , , compare_function PHP, compare_function 200- - C, . 4 , , ; !
...
, , , . .
<, == > , <=>
PHP . , , <, == >.
, int:
php > var_dump(3 < 'bla');
bool(false)
php > var_dump(3 == 'bla');
bool(false)
php > var_dump(3 > 'bla');
bool(true)
php > var_dump(3 <=> 'bla');
int(1)
null :
php > $fp = fopen('test', 'r');
php > var_dump(null > $fp);
bool(false)
php > var_dump(null == $fp);
bool(false)
php > var_dump(null < $fp);
bool(true)
php > var_dump(null <=> $fp);
int(-1)
:
php > var_dump(1.0 > []);
bool(false)
php > var_dump(1.0 == []);
bool(false)
php > var_dump(1.0 < []);
bool(true)
php > var_dump(1.0 <=> []);
int(-1)
$a <=> $b - , docs: -1 if $a < $b, 0 if $a == $b 1, $a > $b.
<, == > true, 1
, $a < $b, $a == $b $a > $b, , . $a <=> $b 1, .
, :
php > class Foo {}
php > class Bar {}
php > $a = new Foo;
php > $b = new Bar;
php > var_dump($a < $b);
bool(false)
php > var_dump($a == $b);
bool(false)
php > var_dump($a > $b);
bool(false)
php > var_dump($a <=> $b);
int(1)
php > var_dump($b <=> $a);
int(1)
, , :
php > $a = ['foo' => 'bar'];
php > $b = ['bar' => 'foo'];
php > var_dump($a < $b);
bool(false)
php > var_dump($a == $b);
bool(false)
php > var_dump($a > $b);
bool(false)
php > var_dump($a <=> $b);
int(1)
php > var_dump($b <=> $a);
int(1)
<=>
int, , :
php > $a = new stdclass;
php > var_dump($a <=> 1);
PHP Notice: Object of class stdClass could not be converted to int in php shell code on line 1
int(0)
, , , , . , , .