RE: Alternate Colors in Rows ($r=!$r)

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

 



First, I am flattered for all the "elegant" comments. 

Honestly, this is PHP 102 level stuff, so I don't see all the fuss. 
Yes it is the ternary operator -- I'm a big fan of that one.
(http://us.php.net/manual/en/language.expressions.php) 

In the below example, (while sloppy on my part), by NOT initializing the $r,
it defaults to Boolean 'false' (not true as in the example), therefore !$r
will be Boolean true. So this just keeps bouncing between the two each time.


http://us.php.net/manual/en/language.variables.php
"It is not necessary to initialize variables in PHP however it is a very
good practice. Uninitialized variables have a default value of their type -
FALSE, zero, empty string or an empty array."

<?php
echo ($unset_bool ? "true" : "false"); // false
$unset_int += 25; // 0 + 25 => 25
echo $unset_string . "abc"; // "" . "abc" => "abc"
$unset_array[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
?> 

Anyways, I think everyone has analyzed this to death, and it's time for
ya'll to get back to work! :) Just add it to your arsenal of 'snippets' and
move on with your lives. HAHAH. Peace out yo.

D.Vin
http://daevid.com

> -----Original Message-----
> From: Jay Blanchard [mailto:jblanchard@xxxxxxxxxx] 
> Sent: Friday, October 05, 2007 11:39 AM
> To: Robert Cummings; Jeff Cohan
> Cc: php-general@xxxxxxxxxxxxx
> Subject: RE:  Alternate Colors in Rows ($r=!$r)
> 
> [snip]
> > 
> > But why does the ($r=!$r) ternary condition work?. (I understand
> > that it DOES but not WHY.)
> 
> Because he's rotating between boolean values.
> 
>     $r = true;
>     $r = !$r;    // Now $r is false; 
>     $r = !$r;    // Now $r is true;
>     $r = !$r;    // Now $r is false; 
>     $r = !$r;    // Now $r is true;
>     $r = !$r;    // Now $r is false; 
>     $r = !$r;    // Now $r is true;
>     $r = !$r;    // Now $r is false; 
>     $r = !$r;    // Now $r is true;
>     ...
> [/snip]
> 
> We just did that proof in the office as well. With a little 
> echoing you
> will see that when $r is TRUE it is set to 1, when it is 
> false it is set
> to NULL.
> 
> But it still should not work logically because you are performing an
> assignment in the IF (it doesn't have to be ternary to work, that is
> just elegant).
> 
> <?php
> echo "<pre>";
> echo ($r = !$r)?"Yes\n":"No\n";
> echo $r."\n";
> echo ($r = !$r)?"Yes":"No";
> echo $r."\n";
> 
> if($r = !$r){
>         echo "Yes\n";
> }else{
>         echo "No\n";
> }
> echo $r."\n";
> 
> 
> if($r = !$r){
>         echo "Yes\n";
> }else{
>         echo "No\n";
> }
> echo $r."\n";
> echo "</pre>";
> ?>
> 
> Returns
> Yes
> 1
> No
> Yes
> 1
> No
> Yes
> 1
> No
> Yes
> 1
> No
> 
> It looks like PHP has an "unintentional feature". Doing this; if($r =
> !$r) should always return TRUE because it is an assignment. I 
> don't know
> if I would rely on this.
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 

-- 
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