FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » empty - not empty()
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: empty - not empty() [message #176312 is a reply to message #176310] Tue, 20 December 2011 16:40 Go to previous messageGo to previous message
M. Strobel is currently offline  M. Strobel
Messages: 386
Registered: December 2011
Karma:
Senior Member
Am 20.12.2011 14:14, schrieb bill:
> On 12/19/2011 8:14 PM, Chuck Anderson wrote:
>> J.O. Aho wrote:
>>> bill wrote:
>>>> searching the manual gives lots of hits, none of which appear
>>>> relevant (at
>>>> least by the title).
>>>>
>>>> I had the following code in a scheduling class:
>>>>
>>>> if ($ptNum == "empty") {
>>>> $ptNum = 0;
>>>> $status= "e";
>>>> }
>>>>
>>>> I pass the string "empty" to the function as a patient number
>>>> if we are
>>>> creating an empty appointment slot.
>>>>
>>>> now, this fails because with a patient number of 0 the if
>>>> returns true.
>>>>
>>>> I am aware of the function empty() that would work like that,
>>>> but do not
>>>> understand why the compare fails with the constant, "empty."
>>>
>>> I assume you are comparing 0 and not the string "0", this makes
>>> you are comparing integer with string, there ain't any type
>>> conversion done.
>>
>> Actually, it is because there *is* an automatic type conversion
>> done when comparing a string to an int.
>>
>> "If you compare a number with a string or the comparison involves
>> numerical strings, then each string is converted to a number and
>> the comparison performed numerically."
>>
>> ... http://us.php.net/manual/en/language.operators.comparison.php
>>
>>> The zero is always equal to a string,
>>
>> Not true.
>> "If the string starts with valid numeric data, this will be the
>> value used. Otherwise, the value will be 0 (zero)."
>>
>> ....
>> http://us.php.net/manual/en/language.types.string.php#language.types.string .conversion
>>
>>
>>
>>> there is a slightly more information at
>>>
>>> http://php.net/manual/en/language.operators.comparison.php
>>
>> You might want to take a closer look at that page.
>>
>> The literal string "empty" does not begin with a numerical
>> character so it will be converted to the integer 0.
>
> Thank you, that makes sense.
>>
>>>> the regular compare is true with the numeric value of zero.
>>> I fixed the function by making it a strict compare, but would
>>> like to know why
>>>
>>> I would say it's not the right way to compare, use strcmp,
>>> is_numeric and so on, to make a proper compare instead of using
>>> the comparison operator.
>>>
>>
>> I think you have that backwards. The identical (strict)
>> comparison is far more efficient than a function call and this
>> it's intended usage. "===" compares value and type (so no type
>> conversion). Hence the string "empty" does not equal (===) the
>> integer 0.
>>
> Glad to know that I stumbled onto the right way to do it.
> Your comments are much appreciated and enlightening.
>
> bill
>

Comparison in PHP, like in many scripting languages, has its
special cases, the same as javascript.

There is one link to php comparison that I use very often, and it
is very difficult to find, you will see very concise tables about
the different compares:

http://de3.php.net/manual/en/types.comparisons.php
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: FastCGI + ignore_user_abort
Next Topic: united governments of planet earth
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Tue Nov 26 06:26:11 GMT 2024

Total time taken to generate the page: 0.03932 seconds