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

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

 



Robin Vickery wrote:
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)

exactly.


What you need to know to explain your results is that internally, PHP
doesn't do a greater-than comparison, it converts them into
less-than-or-equals by reversing the values. So your expressions

I learnt this on internals - which was what trigger me to investigate this...
the thing I really couldn't grok was how php was auto-casting the arrays
when doing the LT/GT comparison (well apparently it wasn't casting them at all!)

thanks to you and David for helping to clear up my confusion (and
for pointing out what I had missed - or forgotten about - in the manual)

rgds,
Jochem

become:

$a < $b
$b <= $a
$b < $a
$a <= $b

Now if you apply the comparison rules to your arrays using those
rewritten operations, you get true every time.

Fun eh?

  -robin

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[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