Clancy wrote:
> On Mon, 16 Mar 2009 17:06:35 -0500, nos...@mckenzies.net (Shawn McKenzie) 
> wrote:
> 
>> Shawn McKenzie wrote:
>>> Paul M Foster wrote:
>>>> I had never completely read over the rules with regard to comparisons in
>>>> PHP, and was recently alarmed to find that $str1 == $str2 might not
>>>> compare the way I thought they would. Is it common practice among PHP
>>>> coders to use strcmp() instead of == in making string comparisons? Or am
>>>> I missing/misreading something?
>>>>
>>>> Paul
>>>>
>>> I would use $str1 === $str2 if you want to make sure they are both
>>> strings and both the same value.
>>>
>>> Since PHP is loosely typed, "0" == 0 is true however "0" === 0 is false.
>>>
>> If you want to force a string comparison you can also use:
>>
>> (string)$str1 == (string)$str2
> 
> Recently there was some discussion about inexplicable results from sorting 
> alphanumeric
> strings.  Inspired by your suggestion I filled in an array with random 4 
> character
> alphanumeric strings, and then wrote a simple bubblesort.  I made two copies 
> of the array,
> and sorted one using a simple comparison, and the other using the above 
> comparison.  The
> initial values of the array were :
> 
>       $aa = array 
> ('ASDF','01A3','0A13',1,'00A3','ZZZZ','001A','0000','7205','00Z0');         
> 
> (There are no letter 'O's in this),
> 
> And the results I got were:
> 
> Tb2_38: Original   Raw comp   String Comp
>                 ASDF        0000           0000
>                 01A3        00A3           001A
>                 0A13        01A3           00A3
>                 1               0A13           00Z0
>                 00A3        ASDF           01A3
>                 ZZZZ        ZZZZ          0A13
>                 001A        1                 1
>                 0000        001A           7205
>                 7205        00Z0           ASDF
>                 00Z0        7205           ZZZZ
> 
> Apart from the out of place '1', apparently treated as '1000', which I threw 
> in out of
> curiosity, the string comparison gave the expected results, but I cannot see 
> the logic of
> the raw comparison.  Can anybody explain these results?
> 
> Clancy
> 
> If anyone is suspicious the actual code I used was:
> 
> 
>       $aa = array 
> ('ASDF','01A3','0A13',1,'00A3','ZZZZ','001A','0000','7205','00Z0');         
> 
>       $k = count ($aa); $bb = $aa; $cc = $aa;
>       while ($k > 1)
>               {
>               $i = 0; $j = 1; while ($j < $k)
>                       {
>                       if ($cc[$i] > $cc[$j])
>                               {
>                               $t = $cc[$i]; $cc[$i] = $cc[$j]; $cc[$j] = $t;
>                               }
>                       ++$i; ++$j;
>                       }
>               --$k;
>               }
> 
>       $k = count ($aa);
>       while ($k > 1)
>               {
>               $i = 0; $j = 1; while ($j < $k)
>                       {
>                       if ((string)$bb[$i] > (string)$bb[$j])
>                               {
>                               $t = $bb[$i]; $bb[$i] = $bb[$j]; $bb[$j] = $t;
>                               }
>                       ++$i; ++$j;
>                       }
>               --$k;
>               }
> 
> echo '<p>Tb2_38: Original&nbsp;&nbsp;&nbsp;Raw comp &nbsp;&nbsp;String 
> Comp</p>'; 
>       $i = 0; $k = count ($aa);
>       while ($i < $k)
>               {
>               echo '<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
>               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '.$aa[$i].
>               '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$cc[$i].
>  
> '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$bb[$i].'</p>';
>               ++$i;
>               }

Just a quick look, your original post was about comparing "strings" and
as far as I know, unless you force a string comparison the < and > will
do a numerical comparison, and even if I'm wrong, anything compared to
your 1 will be a numerical comparison.  If your just trying to sort,
check out sort() and natsort().


-- 
Thanks!
-Shawn
http://www.spidean.com

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

Reply via email to