PHP未定义变量,但print_r会将结果输出到屏幕

PHP未定义变量,但print_r会将结果输出到屏幕,php,debugging,Php,Debugging,有人知道这个问题可能是什么吗 考虑以下代码: 127: print_r($foo); 128: if(isset($foo)){ 129: echo 'it has value'; 130: }else{ 131: echo 'foo is empty'; 132: } 打印到浏览器屏幕的结果是: Array([key] => some value) Notice: Undefined variable: foo in C:\wamp\www\test.php on li

有人知道这个问题可能是什么吗

考虑以下代码:

127:  print_r($foo);
128:  if(isset($foo)){
129:   echo 'it has value';
130:  }else{
131:   echo 'foo is empty';
132:  }
打印到浏览器屏幕的结果是:

Array([key] => some value)
Notice: Undefined variable: foo in C:\wamp\www\test.php on line 127
是的,它在精确的行号上显示,它输出的值与 变量未定义

在前面的代码行中,我实际上包含了一个文件,其中定义了$foo变量

所以在进一步的调查中,我设置了另一个印刷体($foo);在include中,在没有警告的情况下打印变量


有什么线索说明为什么会发生这种情况,有什么解决办法吗?

$foo未定义。输出来自127之前的一行。

您将收到警告消息,因为
打印($foo)必须在
if(isset($foo)){…
内。
如果在
print\r
之前未定义
$foo
,则不会输出任何内容。

警告通常在输出之前打印。您的输出可能来自其他地方。但在注释第127行之后://print\r($foo);输出已消失!@antigator阅读我的解决方案。您将获得您的output@Antagonist:PHP不会仅仅为了产生通知错误而产生通知错误。它会产生通知或递归打印值。它永远不会同时产生这两个错误。唯一的逻辑原因是您会提前获得输出是其他原因在这之前,递归地输出一个数组。这是无可争辩的事实。如果没有看到更多的代码,这是你能得到的唯一答案。好的,但我不能在这里粘贴代码…我正在开发一个框架,一个简单的框架,但有相当多的代码…我以前定义过它…id确实有一个值,仔细检查一下!这个怎么样:我正在Include文件中定义该变量,当我将inlude\u once语句更改为Include时…问题已解决!如果要修复警告消息,请执行我编写的操作。您将不会收到任何警告。将
print\u r
插入
If(isset…)
还可以发布页面的完整代码以获得更详细的答案。您以前在哪里定义了
$foo
?请记住,您比其他人更了解您的代码。只有在您发布包含所有详细信息的代码时,我们才能为您提供帮助。我的解决方案适用于所有情况