Re: anyone care to explain the logic behind this output ....

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 17/02/06, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote:>         THIS CODE> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>> php -r '> $a = array(0, 1);> $b = array(1 => 0, 0 => 1);> var_dump($a < $b); // true> var_dump($a > $b); // true> var_dump($b < $a);> var_dump($b > $a);> [...]>         OUTPUTS (on php5.0.4):> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>> bool(true)> bool(true)> bool(true)> bool(true)> [...]> weird? I think so - but then again I'd never test that array $a is> greater than array $b because this is meaningless to me (in what way is $a> greater - how is this quantified, what 'rules' determine 'greatness' in> this context?)
The rules are simple enough, and listed in the documentation here:
http://www.php.net/manual/en/language.operators.comparison.php#AEN4390
But if you apply those comparison rules to your four expressions,you'd expect to see
bool(true)bool(false)bool(true)bool(false)
What you need to know to explain your results is that internally, PHPdoesn't do a greater-than comparison, it converts them intoless-than-or-equals by reversing the values. So your expressionsbecome:
$a < $b$b <= $a$b < $a$a <= $b
Now if you apply the comparison rules to your arrays using thoserewritten operations, you get true every time.
Fun eh?
  -robin

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux