2013-09-27 3 views
4

Я показываю выпадающую высоту и значения ее содержания. Когда я показываю это выпадающее меню в форме редактирования, не показывая старое значение высоты, выбранное в нем.Выпадающие значения поплавка, не отображающие выбранную опцию

Я хочу показать значение высоты 5,6 футов, выбранные в моем ниспадающего, имеющее значение от 4, 4,1, 4,2 .... 6,10, 6,11, 7 и т.д.

Ниже приведен код, который я использовал

<select name="height"> 
    <?php for($height=(4.0); $height <= 7; $height=($height+0.1)): ?> 
     <option value='<?php echo $height;?>' <?php if((5.6) == ($height)) echo "selected=selected"; ?> ><?php echo $height;?> ft</option> 
    <?php endfor;?>      
</select> 

Является ли какое-либо решение этой проблемы? Пожалуйста помоги.

+5

с плавающей точкой точность вопрос: ' ' –

+0

Вы также можете найти решение здесь. Http://stackoverflow.com/questions/3148937/compare-floats-in-php & http://www.php.net/manual/en/language.types. float.php –

ответ

1

Как отметил Марк в своем комментарии, это проблема точности с плавающей точкой. Вы можете решить эту проблему с помощью round() на вашем $height так:

<select name="height"> 
    <?php for($height=(4.0); $height <= 7; $height=($height+0.1)): ?> 
     <option value='<?php echo $height;?>' <?php if(5.6==round($height,2)) echo "selected=selected"; ?> ><?php echo $height;?> ft</option> 
    <?php endfor;?>      
</select> 

Более подробную информацию можно найти здесь: A: PHP Math Precision - NullUserException

+0

Спасибо, Джейми! Он отлично работает для меня. –

+0

Рад, что я мог бы помочь! –

1

Сравнение с плавающей точки в PHP может быть довольно боль. Решение вопроса может быть сделать следующее сравнение вместо 5.6 == $height:

abs(5.6-$height) < 0.1 

Это приведет к true для 5.6 и false для других значений в вопросе.

Полное решение:

<select name="height"> 
    <?php for($height=(4.0); $height <= 7; $height=($height+0.1)): ?> 
     <option value='<?php echo $height;?>' <?php if(abs(5.6-$height) < 0.1) echo "selected=selected"; ?> ><?php echo $height;?> ft</option> 
    <?php endfor;?>      
</select> 
Смежные вопросы