选择不显示所选值的下拉列表php

时间:2017-02-25 作者:input

我正在使用Wordpress Settings API. 除此之外,一切正常select 下拉列表。当我选择一个选项时,返回的值是正确的,但在下拉列表中,它显示默认的第一个值,即6 而不是所选的。我哪里做错了?

 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 个回复
最合适的回答,由SO网友:Paul \'Sparrow Hawk\' Biron 整理而成

您的$item == $option 这种情况总是失败,是因为PHP比较浮点的方式!

请尝试以下操作:

echo "<option value=\'$item\'" . selected (abs ($item - $options) <= 0.01, true, false) . ">$item</option>" ;
请参见Comparing floats 了解更多信息。

SO网友:Roel Magdaleno

我看了一下,可以看出有一个WP函数selected, 你可以在这里看到link. 使用此功能,而不是执行以下操作:if ( $item == $options ). 您的代码可能如下所示:

foreach ( $seconds as $second => $time ) {
   ?>
      <option value="<?php echo $second; ?>" <?php selected( $browser_cache_ttl, $second ); ?>><?php echo $time; ?></option>
   <?php
}
所以函数循环通过$seconds 并获取$second$time, 放置te$second 作为值,然后调用所选函数,其中第一个参数是要比较的值,第二个参数是当前值,如果这些值相同,则将选择它。

我想这就是你要找的。告诉我它是否有效。

SO网友:Vishal Kumar Sahu

将您的选择替换为此。。。希望它能起作用。。。

        echo \'<select id="cf-nb" name="cf-nb">\';
        foreach ( $items as $item ){
            $if_selected = $item == $options ? "selected=\'selected\'" : "";
            echo "<option value=\'{$item}\' {$if_selected}>$item</option>";

        }

        echo \'</select>\'; 

相关推荐

如何将Java脚本添加到Custom-Page.php模板?

如何将javascript添加到自定义页面。php模板?如何使从w3schools ajax教程获得的以下javascript在自定义页面上工作。php模板?任何帮助都将不胜感激。工作javascript包含在以下HTML中:<!DOCTYPE html> <html> <style> table,th,td { border : 1px solid black; border-collapse: collapse;&#x