我尝试使用设置表单输出用户已保存的选项值。
我添加了一些检查,因此选项值永远不会定义。
$option[3]
返回该选项的默认值。当用户在数据库中没有保存任何选项时,我试图使用它。
$getoption[$option[0]]
是用户保存的数据库中的用户选项。
以下行导致了问题。某些用户选项会返回false
。出于某种原因,下面的行认为该选项未定义并返回$option[3]
而不是保存的值false
。
$optionvalue = ( !isset($getoption[$option[0]]) ) ? $option[3] : $getoption[$option[0]];
如何创建它以便返回false
,但如果数据库中没有保存任何内容,请让它返回$option[3]
?
示例数据:
$database_option = false; // <-- by the user
$default_option = true; // <-- only return when there's nothing in $database_option (false is not considered 'nothing')
$optionvalue = ( !isset($database_option) ) ? $default_option : $database_option;
echo $optionvalue; // I want this to return 'false'
答案 0 :(得分:0)
isset($variable)
, true
通常也会返回false
。仅当值为false
时,它才会返回null
。请参考http://php.net/manual/en/function.isset.php。
因此,您需要将用户选项的返回值设置为null
,或者您可以完全检查下面的false
,
//Incorrect Answer
// $optionvalue = ( $getoption[$option[0]] == null || $getoption[$option[0]] == "" ) ? $option[3] : $getoption[$option[0]];
//Updated Answer
$optionvalue = ((isset($getoption[$option[0]]) && $getoption[$option[0]] == '') || !isset($getoption[$option[0]])) ? $option[3] : $getoption[$option[0]];
更新: J.Doe,我尝试过variuos选项&amp;发布了以下更新。我希望这会对你有所帮助。
/* These options prints the exact value assigned to the variable as result */
$db_option = false; //-> Returns False
// $db_option = 5; //-> Returns 5
// $db_option = 'String'; //-> Returns 'String'
// $db_option = true; //-> Returns true
/* These options prints 'Default' as result */
// $db_option = ''; //-> Returns 'Default'
// $db_option = null; //-> Returns 'Default'
// unset($db_option); //-> Returns 'Default'
// Also, If there is no variable defined at all //-> Returns 'Default'
/* Default option */
$default_option = true;
$optionvalue = ((!isset($db_option)) || (isset($db_option) && ($db_option === '')) ) ? $default_option : $db_option;
var_dump($optionvalue);
答案 1 :(得分:0)
isset()函数仅检查变量是否为NULL。你应该检查你的病情值。
$ optionvalue =($ getoption [$ option [0]] ==&#34;&#34;))? $ option [3]:$ getoption [$ option [0]];