使用PHP“注意:未定义的变量”,“注意:未定义的索引”和“通知:未定义的偏移量”

我正在运行PHP脚本,并继续收到如下错误:

注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name

注意:第11行的未定义索引:my_index C:\ wamp \ www \ mypath \ index.php

第10行和第11行看起来像这样:

echo "My variable value is: " . $my_variable_name;echo "My index value is: " . $my_array["my_index"];

这些错误消息的含义是什么?

他们为什么突然出现?我曾经使用这个脚本多年,我从来没有遇到任何问题。

我该如何解决?

这是一个一般参考问题,供人们链接到重复,而不是一遍又一遍地解释这个问题。我认为这是必要的,因为关于这个问题的大多数现实世界的答案都非常具体。

相关元讨论:


慕慕森
浏览 3277回答 9
9回答

杨__羊羊

一般是因为“糟糕的编程”,现在或以后都有可能出错。如果这是一个错误,请首先对变量进行适当的赋值:$ varname = 0;如果它确实只是有时定义if (isset($varname)),请在使用之前测试它:如果是因为拼错了,那就纠正错误甚至可能在PHP设置中转动警告

拉丁的传说

这意味着您正在测试,评估或打印尚未分配任何内容的变量。这意味着您要么输入错误,要么需要先检查变量是否已初始化为某些内容。检查您的逻辑路径,它可以设置在一个路径中,但不能设置在另一个路径中。

ABOUTYOU

我不想禁用通知,因为它有用,但是想避免太多打字。我的解决方案是这个功能:function&nbsp;ifexists($varname){ &nbsp;&nbsp;return(isset($$varname)?$varname:null);}所以,如果我想引用$ name和echo if exists,我只需写:<?=ifexists('name')?>对于数组元素:function&nbsp;ifexistsidx($var,$index){ &nbsp;&nbsp;return(isset($var[$index])?$var[$index]:null);}在页面中如果我想引用$ _REQUEST ['name']:<?=ifexistsidx($_REQUEST,'name')?>

手掌心

这是因为没有定义变量'$ user_location'。如果您正在使用任何if循环来声明'$ user_location'变量,那么您还必须有一个else循环并定义相同的循环。例如:$a=10;if($a==5)&nbsp;{&nbsp;$user_location='Paris';}&nbsp;else&nbsp;{&nbsp;}echo&nbsp;$user_location;上面的代码将创建错误,因为if循环不满足,并且在else循环中'$ user_location'未定义。仍然要求PHP回应变量。因此,要修改代码,您必须执行以下操作:$a=10;if($a==5)&nbsp;{&nbsp;$user_location='Paris';}&nbsp;else&nbsp;{&nbsp;$user_location='SOMETHING&nbsp;OR&nbsp;BLANK';&nbsp;}echo&nbsp;$user_location;

青春有我

回答“”他们为什么突然出现?我以前使用这个脚本多年,我从来没有遇到任何问题。“大多数网站在“显示所有错误,但不是'通知'和'已弃用'”的“默认”错误报告下运行是很常见的。这将在php.ini中设置并应用于服务器上的所有站点。这意味着示例中使用的那些“通知”将被抑制(隐藏),而其他错误(被认为更为关键)将被显示/记录。另一个关键设置是可以隐藏错误(即display_errors设置为“off”或“syslog”)。在这种情况下会发生的事情是,error_reporting更改为显示通知(根据示例)和/或设置已更改为display_errors屏幕(而不是抑制它们/记录它们)。为什么他们改变了?显而易见/最简单的答案是,有人在php.ini中调整了这些设置中的任何一个,或者PHP的升级版现在使用了之前的不同php.ini。这是第一个看的地方。但是,也可以覆盖这些设置.htconf(网络服务器配置,包括虚拟主机和子配置)*的.htaccess在PHP代码本身其中任何一个也可以改变。还有一个额外的复杂性,即Web服务器配置可以启用/禁用.htaccess指令,因此如果.htaccess中的指令突然启动/停止工作,那么您需要检查它。(.htconf / .htaccess假设您正在以apache身份运行。如果运行命令行,则不适用;如果运行IIS或其他Web服务器,则需要相应地检查这些配置)摘要php.ini中的检查error_reporting和display_errorsphp指令没有改变,或者你之前没有使用不同的php.ini。.htconf(或vhosts等)中的检查error_reporting和display_errorsphp指令没有改变.htaccess中的检查error_reporting和display_errorsphp指令没有改变如果.htaccess中有指令,请检查.htconf文件中是否仍允许它们最后检查你的代码;&nbsp;可能是一个无关的图书馆;&nbsp;看是否error_reporting和display_errorsPHP指令已经被设置在那里。
打开App,查看更多内容
随时随地看视频慕课网APP