Re: Overwrite value of true or false in PHP
| From: | Bobby Pejman | Date: | Mon, 07 Sep 2009 20:56:00 +0000 |
| Subject: | Re: Overwrite value of true or false in PHP | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-297774@lists.php.net to get a copy of this message | ||
I see what's going on now. Because of the type conversion, I am writing my code such that my
return codes are translated to a strict 1 or 0. The idea of having anything other than ''
or 0 translating to a true scares me a little but thanks for pointing out the === operator. I had
to rewrite a lot of code after discovering it. Good times...
Thanks for clarifying everyone.
-----Original Message-----
From: Martin Scotta <martinscotta@gmail.com>
Date: Mon, 7 Sep 2009 16:43:59
To: <bpejman@gmail.com>
Cc: <php-general@lists.php.net>
Subject: Re: [PHP] Overwrite value of true or false in PHP
On Mon, Sep 7, 2009 at 4:14 PM, Bobby Pejman <bpejman@gmail.com> wrote:
> Hi,
>
> I noticed that the following returns a 1.
>
> echo (1<2) ? True : False
>
> I was under the impression that true/false are of type boolean and not int.
> But in php anything other than 0 translates to true, meaning a 1. What I
> am trying to achieve is for a 1 to be a 1 and a true or false to be a true
> and false respectively and I do not want to put quotes around the word
> true/false either because then it is no longer a boolean but string.
>
> Is it possible to overwrite php's true/false and declare them as boolean?
> You often see in C++, some use Define().
>
> Thanks.
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
Yes *true* and *false* are booleans.
PHP convert natively different types to boolean in order to help write
sentences like this
if( $object )
{
$object->something();
}
while( $data = mysql_fetch_assoc( $resource ) )
{
print_r( $data );
}
But we you try to print a boolean variable PHP convert it to string: true
becomes '1' and false becomes ''. That's why you can't just echo a
boolean
variable to see the value, but you can rely on var_dump to show this.
$bool = true;
echo $bool;
var_dump( $bool );
$bool =! $bool;
echo $bool;
var_dump( $bool );
As other languages PHP as an special operator for checking types while
comparing values.
$a = 'false';
$b = true;
var_dump(
$a == $b, # <-- true
$a === $b # <-- false
);
This happens because values are converted before comparison so, 'false'
becomes true.
PHP converts everything different to an empty string as *true*
This also affect any type of variable.
--
Martin Scotta