简体   繁体   中英

PHP Generate Column loop?

I am trying to generate a column loop within html. This is the regular code that works and outputs everything I want in the correct format.

<tr>
<td style="color:#<?php echo $ftstyle1; ?>"><div style="background-color:#<?php echo $bgstyle1; ?>"><?php echo $partnumber ?></div></td>
<td style="color:#<?php echo $ftstyle; ?>"><div style="background-color:#<?php echo $bgstyle; ?>"><?php echo $vendorpartnumber ?></div></td>
<td style="border:1px solid black;"><?php echo $cost ?></td>
<td style="border:1px solid black;"><?php echo $stock ?></td>
<td style="border:1px solid black;"><?php echo $wholesale ?></td>
<td style="border:1px solid black;"><?php echo $notes ?></td>
<td style="color:#<?php echo $ftstyle3; ?>"><div style="background-color:#<?php echo $bgstyle3; ?>"><?php echo $salesquotient_p ?></div></td>
<td style="border:1px solid black;"><?php echo $last7dayssum ?></td>
<td style="border:1px solid black;"><?php echo $last1day_n ?></td>
<td style="border:1px solid black;"><?php echo $last2day_n ?></td>
<td style="border:1px solid black;"><?php echo $last3day_n ?></td>
<td style="border:1px solid black;"><?php echo $last4day_n ?></td>
<td style="border:1px solid black;"><?php echo $last5day_n ?></td>
<td style="border:1px solid black;"><?php echo $last6day_n ?></td>
<td style="border:1px solid black;"><?php echo $last7day_n ?></td>

I am trying to replace the echo $last1day_n, $last2day_n, etc... with a loop that will generate those columns. This is what I have tried so far.

<td style="border:1px solid black;"><?php echo $cost ?></td>
<td style="border:1px solid black;"><?php echo $stock ?></td>
<td style="border:1px solid black;"><?php echo $wholesale ?></td>
<td style="border:1px solid black;"><?php echo $notes ?></td>
<td style="color:#<?php echo $ftstyle3; ?>"><div style="background-color:#<?php echo $bgstyle3; ?>"><?php echo $salesquotient_p ?></div></td>

<?php for ($i = 1; $i <= 7; $i++) {
$dd = "$" . "last" . strval($i) . "day_n";
?>
<td style="border:1px solid black;"><?php echo $dd ?></td>
<?php }  ?>

This doesn't work. It outputs "$last1day_n", "$last2day_n", ... "$last7day_n" instead of the correct integer values I am trying to echo. Is this the correct way to loop columns or am I approaching this the wrong way?

You can try removing the "$" from the $dd value and then adding an extra "$" when you reference it.

$dd = "last" . strval($i) . "day_n";

echo $$dd;

The "$$dd" basically says take the value of the variable named by the value of the variable "dd". So you set $dd to the name of the variable name you want, then take the value of that variable. This is called "variable variables" in PHP: http://www.php.net/manual/en/language.variables.variable.php

the $$dd doesn't work. I made it work using this:

<?php 
   for ($i = 1; $i <= 7; $i++) {
       $dd = ${'last' . $i . 'day_n'};
       echo $dd;
   }
?>

source: http://forums.asmallorange.com/topic/5427-php-convert-string-to-variable/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM