You are here: Re: TRUE and FALSE are treated differently « PHP Programming Language « IT news, forums, messages
Re: TRUE and FALSE are treated differently

Posted by Tim Streater on 01/08/08 13:55

In article <v5o6o35l542rgmvhki3rabgct1umn3fj47@4ax.com>,
A Bit Narked <anonymous@example.com> wrote:

> On Sun, 6 Jan 2008 23:19:45 +0000,
> Toby A Inkster <usenet200712@tobyinkster.co.uk> wrote:
>
> >A Bit Narked wrote:
> >
> >> And yet you can echo true. The output is '1'.
> >
> >No -- you can't echo a boolean in PHP. Why you try, the boolean is
> >implicitly cast to a string.
> >
> >This:
> >
> > echo $bool;
> >
> >is actually executed as if you coded this:
> >
> > echo (string)$bool;
> >
> >If you look up the manual on type casting, you'll find that FALSE is cast
> >to an empty string, and TRUE is cast to a non-empty string.
> >
> >If you cast to an integer instead of a string, then you'll find that FALSE
> >is cast to 0, which seems to be what you want.
> >
> > echo (int)FALSE;
>
> Apologies for imprecise expression :-) PHP provides free
> casting (e.g. to string in echo) so I ignore it.
>
> My real point is that there is no logical relationship between a
> boolean value of TRUE and a string value '1' _except_ where the
> same relationship yields a string value '0' for boolean FALSE.
> I.e., the C precedent.

There isn't and there shouldn't be.

> I'm not fashed by the idea that there's a special boolean type
> whose values are TRUE and FALSE. But logically, the string
> representations of such sui generis values should be 'true' and
> 'false'. There is no logic whatever in string representions of
> '1' and ''. No one has articulated a relationship such that
> '1' and '' makes any sort of sense.

What makes more sense is to assert that the result "echo true;" is
undefined.

> One of the basic principles of good design is predictability.
> 'From one thing know ten thousand things' as the Chinese stated
> it ages ago. So if there's a well-known precedent, we should
> follow it unless we have a powerful reason for not doing ('Ensure
> that everyone after us makes the same mistake we did', as Maurice
> Wilkes put it, to appreciative laughter). And whatever we do
> should be internally consistent.

It is internally consistent. I can rely on true and false having those
values respectively. And that's all you need to know. The notion of them
having some "underlying value" is unnecessary.

> The PHP developers' choice for the string reps of true and false
> violate this principle all to buggery, which is what got up my
> nostril.

Nah, it'll be your code that violates things to buggery, as you insist
in your delusion.

> I thought everyone here would immediately see how daft it is, but
> I expect we're circling the drain as a species precisely because
> so many people - even very smart ones - go through life accepting
> without examination that 'whatever is, is right'.

No, we've moved on.

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация