PHP генерирует цикл столбцов?

#php #html #loops

#php #HTML #циклы

Вопрос:

Я пытаюсь сгенерировать цикл столбцов в html. Это обычный код, который работает и выводит все, что я хочу, в правильном формате.

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

Я пытаюсь заменить echo $last1day_n, $ last2day_n и т.д. … циклом, который будет генерировать эти столбцы. Это то, что я пробовал до сих пор.

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

Это не работает. Он выводит «$last1day_n», «$last2day_n», … «$ last7day_n» вместо правильных целочисленных значений, которые я пытаюсь отобразить. Это правильный способ зацикливания столбцов или я неправильно подхожу к этому?

Комментарии:

1. Почему бы просто не поместить $last*day_n значения в массив? С этим было бы значительно проще работать.

Ответ №1:

Вы можете попробовать удалить «$» из значения $ dd, а затем добавить дополнительный «$» при ссылке на него.

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

echo $$dd;
  

«$$ dd» в основном говорит о том, что принимает значение переменной, названной значением переменной «dd». Итак, вы устанавливаете $ dd в качестве имени желаемой переменной name, затем принимаете значение этой переменной. В PHP это называется «переменные переменные»:http://www.php.net/manual/en/language.variables.variable.php

Комментарии:

1. Я бы 1 за ответ, но я не могу заставить себя проголосовать за решение, которое включает переменные переменные. Это просто компенсация за плохой дизайн операционной системы, что означает, что это более плохой дизайн, чтобы скрыть действительно плохой дизайн…

2. Я согласен, исходный код уродлив, но переменные переменные, похоже, именно то, что ожидал постер. Не могу научить хорошему дизайну программного обеспечения в одном ответе. 😉

Ответ №2:

$$dd не работает. Я заставил это работать, используя это:

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

источник: http://forums.asmallorange.com/topic/5427-php-convert-string-to-variable /

Комментарии:

1. Спасибо! Я подправил код и получил нечто похожее на это, которое отлично работает.