使用AND作为条件

时间:2012-08-25 12:09:25

标签: php

我遇到了一个使用以下代码的wordpress主题:

is_file and include 'file.php';

我以前从未见过这样,所以我很困惑。它在我正在看的特定wordpress主题中工作正常。但是,如果我只是采用那行代码并自行运行它包含文件,但也给了我以下通知:

Notice: Use of undefined constant is_file - assumed 'is_file' in (the file path) on line 3

但如果我这样做:

is_file('file.php') and include 'file.php';

工作正常。

问题1:为什么这样做有效?我在哪里可以阅读更多关于使用“和”作为条件的内容?

问题2:编码练习不好吗?它慢了吗?有风险吗?等

问题3:为什么它在wordpress主题中起作用而不是单独起作用? (是的,我使用相同的PHP设置)。

4 个答案:

答案 0 :(得分:1)

在这种情况下,and表示“如果陈述为真,则执行此操作”。因此,Wordpress中的代码是无用的:

is_file and include 'file.php'

因为常量应该是大写的。即使它们在这种情况下意味着一个常数,也没有意义。

is_file('my_file') and include 'my_file.php'

是正确的方法。

同样,您可以使用or:“如果语句为false,请执行此操作”,如

$payed or my_redirect_function('pay.php'); //go to payment page

答案 1 :(得分:1)

is_file('file.php') and include 'file.php'; 

它有效,因为is_file('file.php')返回TRUE

is_file and include 'file.php'; 

它不起作用,因为is_file没有返回任何内容。

答案 2 :(得分:1)

可以将AND指令视为函数

function and($a, $b)
{
    if($a) return $b;
    else return $a;
}

只有一个例外。当表达式作为第二个参数传递时,它甚至不会被执行,当$ a为false时。这是内置语言优化,保证以这种方式运行。 通过这种方式,您可以编写一系列表达式,只有当前面的每个表达式都为false时才会执行。 它是经常使用的功能,不仅在PHP中,它不被认为是不好的做法。

同样的事情是$ a或$ b:

function or($a, $b)
{
    if($a) return $a;
    else return $b;
}

可悲的是对wordpress不太了解。

答案 3 :(得分:0)

and首先检查左操作数,如果为false,则不需要检查右操作数。

我记得在某处读过它。让我看看能否找到链接。