include ( $_GET['p'] == 'home') ? 'pages/home.php' : NULL;
给出错误:
注意:未定义的索引:p在第38行的/var/www/index.php中 警告: require():第38行的/var/www/index.php中的文件名不能为空。
致命错误:require():打开所需的失败'' (include_path ='。:/ usr / share / php:/ usr / share / pear')in 第38行/var/www/index.php
我理解未定义的索引,但为什么我会得到其他错误?这一行:
include ( !isset($_GET['p'])) ? 'pages/home.php': NULL;
工作正常。请注意,第一个代码在if语句中可以正常工作(除了我理解的未定义索引)
答案 0 :(得分:7)
include
需要一个字符串,表示要包含的文件的路径。所以NULL
will get converted to string that results in an empty string。因此,包含空字符串引用的文件会导致警告。
只需使用if
代替:
if (!isset($_GET['p'])) {
include 'pages/home.php';
}
答案 1 :(得分:0)
请不要那样做!尝试这样的事情:
(isset($_GET['p']) && $_GET['p'] === 'home') ? include 'pages/home.php' : '';