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、文字列に変換され、空の文字列になります。その結果、空の文字列によって参照されるファイルを含めると、警告が発生します。

if代わりに使用するだけです。

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 に答える