IF 语句中的未定义变量(但似乎已正确声明)
Undefined variable in IF statement (but seems correctly declared)
有些事情让我抓狂,如果我在 IF 语句中声明一个变量,我会得到一个未定义的变量。如果我在 IF 语句上方声明此变量,PHP 通知将消失。
我的代码:
if($tab_sel==FILENAME_DEFAULT){ // FILENAME_DEFAULT = index.php
if(...){
some functions
}
$nb_pages=ceil($count/$limit) : 0;
}
echo $nb_pages; //4000 is displayed on the page (OK),
但是在 Nginx 日志中,我得到:
FastCGI sent in stderr: "PHP message: PHP Notice : Undefined variable nb_pages in /.../index.php
但是当我加载页面时,我可以看到 nb_page 显示正确(示例:值为 4000),但是在日志中,未定义的变量..
在我的示例中,如果我在 "if($tab_sel==FILENAME_DEFAULT){" 之上声明 nb_pages,则未定义消失。
有什么想法吗?
那是因为您在 if 中创建了可能无法通过的变量。在这种情况下,该变量将是未定义的,并且 PHP 将抛出一个错误,因为它找不到您之后要求的变量。
在 if 之前声明它就可以了。
$nb_pages;
if($tab_sel==FILENAME_DEFAULT){
if(...){
我认为这可能是环境问题。尝试将 FILENAME_DEFAULT
和 $nb_pages
都放入日志文件中:
file_put_contents(
'test.log',
date('[Y-m-d H:i:s] ')
. FILENAME_DEFAULT . "\t" . @$nb_pages . PHP_EOL,
FILE_APPEND
);
@
将阻止警告消息。
我发现它不起作用的原因:
in case of a 404 error page (called FILENAME_404)
我还使用了 index.php 文件,我在其中调用了未声明的变量。
这就是为什么 Nginx 错误说 index.php,不是因为它没有进入 if($tab_sel==FILENAME_DEFAULT){
,而是因为在其他一些情况下我也使用index.php 与 tab_sel=FILENAME_404
谢谢大家!
有些事情让我抓狂,如果我在 IF 语句中声明一个变量,我会得到一个未定义的变量。如果我在 IF 语句上方声明此变量,PHP 通知将消失。
我的代码:
if($tab_sel==FILENAME_DEFAULT){ // FILENAME_DEFAULT = index.php
if(...){
some functions
}
$nb_pages=ceil($count/$limit) : 0;
}
echo $nb_pages; //4000 is displayed on the page (OK),
但是在 Nginx 日志中,我得到:
FastCGI sent in stderr: "PHP message: PHP Notice : Undefined variable nb_pages in /.../index.php
但是当我加载页面时,我可以看到 nb_page 显示正确(示例:值为 4000),但是在日志中,未定义的变量..
在我的示例中,如果我在 "if($tab_sel==FILENAME_DEFAULT){" 之上声明 nb_pages,则未定义消失。
有什么想法吗?
那是因为您在 if 中创建了可能无法通过的变量。在这种情况下,该变量将是未定义的,并且 PHP 将抛出一个错误,因为它找不到您之后要求的变量。
在 if 之前声明它就可以了。
$nb_pages;
if($tab_sel==FILENAME_DEFAULT){
if(...){
我认为这可能是环境问题。尝试将 FILENAME_DEFAULT
和 $nb_pages
都放入日志文件中:
file_put_contents(
'test.log',
date('[Y-m-d H:i:s] ')
. FILENAME_DEFAULT . "\t" . @$nb_pages . PHP_EOL,
FILE_APPEND
);
@
将阻止警告消息。
我发现它不起作用的原因:
in case of a 404 error page (called FILENAME_404)
我还使用了 index.php 文件,我在其中调用了未声明的变量。
这就是为什么 Nginx 错误说 index.php,不是因为它没有进入 if($tab_sel==FILENAME_DEFAULT){
,而是因为在其他一些情况下我也使用index.php 与 tab_sel=FILENAME_404
谢谢大家!