RE: how to say "inverse your value" (to a boolean)?

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

 



 

> -----Original Message-----
> Daevid Vincent wrote:
> > NO! For the love of God and all that is holy, don't do that 
> accumulator / mod "hack". 
> > That's sooooo 1980's. And why make the CPU do all that math 
> for every row...
> > 
> > Just do this. It's quick and simple:
> > 
> > CSS:
> > 	.dataRow1 { background-color: #DFDFDF; }
> > 	.dataRow2 { background-color: #FFFFFF; }
> > 
> > foreach ($foo_array as $foo) {
> >    ?><tr class="<?= ($dr = !$dr) ? "dataRow1" : "dataRow2" 
> ?>"><td><?= $foo
> > ?></td></tr><?php
> 
> Wow, were to start with all the problems in the above code:
> 1.  Short tags?

Nothing wrong with them. Do yourself a test. There is zero speed difference
in a page. It makes your code cleaner and easier to read, plus less
kilobytes you have to pull from the hard drive, therefore faster pages.

http://stackoverflow.com/questions/662891/is-there-a-speed-difference-betwee
n-php-echo-var-and-var

http://cubicspot.blogspot.com/2009/06/maximum-failure-php-6-deprecates-short
.html

Are you sure you're not confused with "short_open_tags" ie. <? ?> -- which I
am fully against (as am I against <% %> too), although sadly they are lumped
into the same directive, when IMHO they should be separate.

http://us.php.net/manual/en/ini.core.php#ini.short-open-tag

http://www.php.net/~derick/meeting-notes.html#remove-support-for-and-script-
language-php-and-add-php-var

> 2.  Not using echo or print.  

<?= ?> is a fantastic shortcut to the antiquated <?php echo ""; ?> B.S.
The vast majority of your page is output in little fragments like this, so
why not keep it clean and easy to read. Why would you purposely choose to be
more verbose than you need to be for something as basic as "print".

> You actually recommend breaking in/out of php?

Hell yeah I do. THAT is one of the MAIN reasons to use PHP. Otherwise, why
not just render your whole page with a bunch of $html .= '<tr><td>...';
tags and print $html at the end. Welcome to the year 2000 my friend.

You're probably the same kind of person that does this crap:

if ($foo == true)
{
   echo "A";
}
else
{
   echo "B";
}

(complete with extra braces and checking for 'true' explicitly, but not
using === in such cases)

Rather than a much cleaner, easier to read/write and more concise:

 <?= ($foo) ? 'A' : 'B' ?>


> 3.  Using uninitialized variables (I run with the E_ALL crowd)

I'm so happy for you. Do you have a membership card and everything? That's
your own masochistic fault then. I run with the
save-myself-the-headache-and-write-clean-efficient-code crowd.

> 4.  Using the <tr class=''> and not the <td class=''>...  Hmmm

Maybe you're new to how HTML works, but if you want to highlight a ROW (as
the OP did), then you put the background color on the highest parent that it
applies to. Hey imagine that, there is a TR tag which stands for TABLE ROW
tag. Seems obvious to me. This reduces your page size in kilobytes, makes a
much cleaner HTML rendering to read in source, and is the PROPER way to do
it.

> > }
> > 
> > No need to initialize $dr as by default PHP will make it a 
> boolean "false",
> > then each itteration, it will toggle true/false and 
> substitute the CSS class
> > 
> >> -----Original Message-----
> >> From: Jim Lucas [mailto:lists@xxxxxxxxx] 
> >> Sent: Monday, August 10, 2009 4:03 PM
> >> To: John Butler
> >> Cc: PHP-General List
> >> Subject: Re:  how to say "inverse your value" (to a boolean)?
> >>
> >> John Butler wrote:
> >>> quick Q:
> >>> I have this inside a foreach{}  that I want to alternate 
> >> between on and
> >>> off so I can alternate the background-color of my <tr>'s.
> >>>
> >>> $tableRowBGcolorBoolCounter != $tableRowBGcolorBoolCounter; 
> >> //-boolean
> >>> on and off
> >>>
> >>> I am looking thru' docs and books, but can't remember (nor 
> >> find now) in
> >>> PHP how to say "inverse your value" (to a boolean).
> >>> ?
> >>>
> >>> TIA! -G
> >>>
> >>>
> >> <?php
> >>
> >> $arr = range(1, 10);
> >>
> >> $i = 0;
> >> foreach ( $arr AS $row ) {
> >>
> >> 	$row_color = ( ( $i++ % 2 ) ? 'green' : 'red');
> >>
> >> 	echo $row_color;
> >>
> >> }
> >>
> >> ?>
> >>
> 
> another (neat|strange)+ way I use the above is like so
> 
> <style>
> 	.rowColor0 { background: #FFFFFF; }
> 	.rowColor1,
> 	.rowColor3 { background: #EEEEEE; }
> 	.rowColor2 { background: #DDDDDD; }
> </style>
> <?php
> 
> $arr = range(1, 10);
> 
> $i = 0;
> 
> foreach ( $arr AS $row ) {
> 
> 	echo '<tr><td class="rowColor'.( $i++ % 4 
> ).'"'>'.$row.'</td></tr>';
> 
> }
> ?>
> 
> >>
> >> -- 
> >> PHP General Mailing List (http://www.php.net/)
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> > 
> > 
> 
> 
> -- 
> Jim Lucas
> 
>     "Some men are born to greatness, some achieve greatness,
>         and some have greatness thrust upon them."
> 
> Twelfth Night, Act II, Scene V
>      by William Shakespeare
> 


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