I’m using WordPress Settings API
. Everything works as it should except this select
dropdown. When I select an option, the value echoed is correct but in the dropdown it displays the default first value i.e 6
and not the selected one. Where am I going wrong?
public function someplugin_select() {
$options = get_option( 'plugin_252calc');
echo $options; //shows the correct value selected
$items = array();
for ($i=6; $i <=10; $i+= 0.1)
{
$items[] = $i;
}
echo '<select id="cf-nb" name="cf-nb">';
foreach ( $items as $item )
{
echo '<option value="'. $item .'"';
if ( $item == $options ) echo' selected="selected"';
echo '>'. $item .'</option>';
}
echo '</select>';
}
3 Answers
The reason your $item == $option
condition is always failing is because of the way PHP compares floats!
Try the following instead:
echo "<option value="$item"" . selected (abs ($item - $options) <= 0.01, true, false) . ">$item</option>" ;
See Comparing floats for more info.