2
include ( $_GET['p'] == 'home') ? 'pages/home.php' : NULL;

给出错误:

注意:未定义索引:第 38 行 /var/www/index.php 中的 p
警告:require():第 38 行 /var/www/index.php 中的文件名不能为空
致命错误:require():需要打开失败'' (include_path='.:/usr/share/php:/usr/share/pear') 在 /var/www/index.php 第 38 行

我了解未定义的索引,但为什么会出现其他错误?这一行:

include ( !isset($_GET['p'])) ? 'pages/home.php': NULL;

工作正常。请注意,第一个代码在 if 语句中可以正常工作(除了我理解的未定义索引)

4

2 回答 2

7

include需要一个字符串,该字符串表示要包含的文件的路径。因此NULL将转换为导致空字符串的字符串。因此,包含由空字符串引用的文件会导致警告。

只需使用 anif代替:

if (!isset($_GET['p'])) {
    include 'pages/home.php';
}
于 2012-12-16T09:47:22.920 回答
0

请不要那样做!尝试这样的事情:

(isset($_GET['p']) && $_GET['p'] === 'home') ? include 'pages/home.php' : '';
于 2012-12-16T09:50:13.100 回答