Есть ли способ запустить цикл для десятичного числа в php? - PullRequest
0 голосов
/ 11 ноября 2018

Мне нужно отобразить поле выбора с десятичными числами с помощью цикла php FOR. Смотрите ниже код:

<select name="animationDelayTime">
    <option value="0.1">0.1s</option>
    <option value="0.2">0.2s</option>
    <option value="0.3">0.3s</option>
    <option value="0.4">0.4s</option>
    <option value="0.5">0.5s</option>
    <option value="0.6">0.6s</option>
    <option value="0.7">0.7s</option>
    <option value="0.8">0.8s</option>
    <option value="0.9">0.9s</option>
    <option value="1.0">1.0s</option>
    <option value="1.1">1.1s</option>
    <option value="1.2">1.2s</option>
    <option value="1.3">1.3s</option>
</select>

Этот цикл будет продолжаться, пока не достигнет номера 10.

Возможно ли зациклить десятичные числа в php?

Если возможно, кто-нибудь может проверить следующий код, который не работает. я получить данные из базы данных, и я использовал условный оператор для выбор и отображение выбранной записи, выбранной в поле выбора:

<select class="form-control" name="delayTime" title="Choose animation delay time..." data-toggle="tooltip" required>
<?php
 for ($x = 0.1; $x <= 10.1; $x=$x+0.1) {
  if($x == $updateEntry->delayTime){
   echo '<option value="' .$x.'" selected>'.$x.'s</option>';
  }
   echo '<option value="' .$x.'">'.$x.'s</option>'.PHP_EOL;
 }
?>
</select>

Пожалуйста, смотрите ниже снимок экрана. Значение 7.1 должно быть выбрано в поле выбора, но оно не выбрано, только когда выбираются два или три числа, не знаете почему? Пожалуйста, помогите мне разобраться. The value 7.1 should be selected in the select box but it not selected only beginning two or three number get selected, don't know why? Please help me to sort it.

Наконец-то я нашел способ решения этой проблемы с помощью диапазона в цикле foreach. Смотрите ниже:

<?php
 foreach (range(0.1, 10, 0.1) as $val) {
   $selected = ($val == $updateEntry->delayTime) ? "selected": "";
    echo '<option value="' . $val . '" '.$selected.'>' . $val . 's</option>';
 }
?>

Ответы [ 4 ]

0 голосов
/ 11 ноября 2018

Вы можете сделать это многими способами. Например, используя цикл for(). Начните с 0.1, продолжайте до 10 и увеличивайте на каждом шаге 0.1

range() также является хорошим выбором для этого, но тогда вы должны использовать foreach()

<?php
  echo '<select name="animationDelayTime">';
  for ($x = 0.1; $x <= 10; $x=$x+0.1) {
   echo '<option value="' .$x.'">'.$x.'s</option>'.PHP_EOL;
  }
  echo '</select>';  
?>

DEMO: https://3v4l.org/RlAcM

РЕДАКТИРОВАТЬ: КАК за новое изменение требования. Здесь я просто предполагаю, что значение $updateEntry->delayTime равно 0,5 . Вы можете использовать его, когда получаете его из БД.

<select class="form-control" name="delayTime" title="Choose animation delay time..." data-toggle="tooltip" required>
<?php
 //$selected = '';
 for ($x = 0.1; $x <= 10.1; $x=$x+0.1) {
   $selected = ($x == 0.5) ? "selected": "";     
   echo '<option value="' .$x.'" '.$selected.'>'.$x.'s</option>'.PHP_EOL;
 }
?>
</select>
0 голосов
/ 11 ноября 2018

Попробуйте это

For( $x = 0 ; $x < 1.4; $x += 0.1){

echo "<option value='$x'>".$x."s</option>";
}
0 голосов
/ 11 ноября 2018

Простой с range:

// first `0.1` - start value, `10` - end value, second `0.1` - step
foreach (range(0.1, 10, 0.1) as $val) {  
    echo '<option value="' . $val . '">' . $val . 's</option>';
}
0 голосов
/ 11 ноября 2018

Вы можете использовать цикл while:

// Initialize the variable
$val = 0.1; 

// Loop until the value is less than or equal to 10
while ($val <= 10) {  

    // generate the string using $val
    echo '<option value="' . $val . '">' . $val . 's</option>';

    // Increment the value by 0.1 for next iteration
    $val += 0.1; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...