Select dropdown not showing selected value php

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
3

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.

Leave a Comment