在 PHP 中,如果有这样的条件:
if ( is_numeric($my_var) && $my_var == 1 ) {
}
如果 if 的第一部分为假,那么第二部分 ( $my_var == 1
) 是否会被执行?
谢谢!
在 PHP 中,如果有这样的条件:
if ( is_numeric($my_var) && $my_var == 1 ) {
}
如果 if 的第一部分为假,那么第二部分 ( $my_var == 1
) 是否会被执行?
谢谢!
在您的示例中,$my_var == 1
将不会执行(如果它不是数字)。PHP 将确定第一部分的计算结果false
,因此执行第二部分没有任何好处,因为您使用的是&&
AND 运算符。
一个例子:
if(isset($_GET['something']) && $_GET['something'] == '1')
{
}
如果缺少查询字符串变量something
,则它不会检查它是否等于1
。如果它这样做了,那么它可以产生一个Undefined index
通知。
您还可以通过以下方式验证此行为:
$test = '2';
if($test == '1' && die('dead'))
{
}
echo 'execution continues....';
设置$test = '2'
并且die()
不会停止执行。将其设置为1
,模具将执行并停止,因此您将看不到Execution continues...
编辑:这里有一些一般信息(不是特定于 PHP 的)。
如果第一个条件是false
第二个,如果你使用&&
. 你可以自己试试:
function a(){
echo 'a';
return true;
}
function b(){
echo 'b';
return true;
}
if (a() && b())
{
//do something
}
这将输出:ab
。
function a(){
echo 'a';
return false;
}
function b(){
echo 'b';
return true;
}
if (a() && b())
{
//do something
}
输出a
。
我给你这个例子是因为我在文档中找不到任何东西,除了本节的第一条评论
这称为按需调用或惰性评估。
注意:在某些情况下,尽管第一个条件处于状态,但执行第二个函数是有用或必要的。在这种情况下,您可以使用&
operator。使用按位运算符,您可以处理数字,而不是布尔值。因为 php 解释器应该知道运算符之前和之后的值,&
它将执行两个函数 ( a() & b()
) 和true
,false
分别被评估为1
和0
,1 & 0 => 0
这将被评估为false
语句if
中。
你可以使用喜欢
if ( is_numeric($my_var)) {
if($my_var == 1)
{
// your code
}
}