Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有未声明变量的if/else_Php - Fatal编程技术网

Php 带有未声明变量的if/else

Php 带有未声明变量的if/else,php,Php,对于可能存在或可能不存在的变量,执行if/else语句的正确方法是什么 if ($variable == "yes") { do stuff; } 例如:我有一个从URL获取变量的网站搜索脚本。如果用户未选中任何高级选项,则URL中不包含这些选项。基本上,我想知道的是,如果变量不存在,那么使用如下内容是否正确 if ($variable == "yes") { do stuff; } 如果该变量不存在,这会导致任何类型的问题吗?或者我应该一直使用类似于: if (isset($variabl

对于可能存在或可能不存在的变量,执行if/else语句的正确方法是什么

if ($variable == "yes") { do stuff; }
例如:我有一个从URL获取变量的网站搜索脚本。如果用户未选中任何高级选项,则URL中不包含这些选项。基本上,我想知道的是,如果变量不存在,那么使用如下内容是否正确

if ($variable == "yes") { do stuff; }
如果该变量不存在,这会导致任何类型的问题吗?或者我应该一直使用类似于:

if (isset($variable) && $variable == "yes") { do stuff; }

第二种方法是imo,因为如果未设置$variable,它将抑制$variable不存在的通知错误。无论哪种方式,这都只是一个通知错误,因此您可以只抑制通知,也可以使用第一种方式。

尝试将if值等于if语句中的值,这样您就永远不会得到错误通知及其正确值

if(isset($value)){
   if($value==='this'){
     //magic 
   }
}

在检查变量的值之前,请使用isset进行检查并设置默认值,如

if (!isset($variable)) {
    $variable = "no";
}

if ($variable == "yes") { do stuff; }

如果变量不存在,则不会生成警告。这意味着
empty()!isset($var)|$var==false

// $foo = 'no';

if(!empty($foo) AND $foo == 'yes')
{
    echo $foo;
}

备选案文2。如果你不确定是否同意开清,请务必检查isset!始终检查isset!别忘了添加“else”来管理错误我发现自己正在做的事情类似于
$variable=isset($\u REQUEST['variable'])$_请求['variable']:'sensible default'这样我所有的变量都会被定义,我会确保它们存在,等等。最后得出结论:我认为你必须选择选项2,如果$variable未设置和/或$variable未设置==是,则必须管理错误。假设您谈论的是@$variable之类的内容,出于性能开销的原因,有人反对错误抑制。您可能指的是将“错误报告”设置为“关闭”,除非确实没有其他方法,否则不要抑制错误消息。这就像把手指插在耳朵里,唱着‘我没在听!’每当出现错误时,我通常会关闭“注意错误”,因为在一个每天点击数百万次的服务器上,日志会很快被非常愚蠢的事情填满。如果您是在生产环境中,您不需要通知-只需要在暂存imo中。如果您的代码每天抛出数百万个错误,也许您应该修复您的代码。@skrilled:我同意您的意见,当然我不会在生产环境中设置调试级别!;)在我看来,错误必须由开发人员来管理……即使他选择将错误踢出垃圾箱!仅供参考,如果(isset($value)&&($value==“yes)
php解释器将短路(延迟求值)isset,则代码和
之间没有区别,请查看它是否为false,并且永远不要检查第二个条件