我正在运行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"];
Run Code Online (Sandbox Code Playgroud)
这些错误消息的含义是什么?
他们为什么突然出现?我曾经使用这个脚本多年,我从来没有遇到任何问题.
我该如何解决?
这是一个一般参考问题,供人们链接到重复,而不是一遍又一遍地解释这个问题.我觉得这是必要的,因为关于这个问题的大多数现实世界的答案都非常具体.
相关元讨论:
有没有之间的差异isset和!empty.如果我做这个双布尔检查,这种方式是正确的还是多余的?有没有更短的方法来做同样的事情?
isset($vars[1]) AND !empty($vars[1])
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么同时检查isset()和!empty()
你能帮助我改进我的编码风格吗?:)在我需要检查的一些任务中 - 变量为空或包含某些东西.为了解决这个任务,我通常会做以下几点.
检查 - 是否设置此变量?如果它已经设置 - 我检查 - 它是空的还是没有?
<?php
$var = '23';
if (isset($var)&&!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
Run Code Online (Sandbox Code Playgroud)
我有一个问题 - 我应该在empty()之前使用isset() - 是否有必要?TIA!
我读到isset()函数处理空字符串的某处TRUE,因此isset()不是从HTML表单验证文本输入和文本框的有效方法.
因此,您可以empty()用来检查用户输入的内容.
该isset()函数是否将空字符串视为TRUE?
那我应该在哪些情况下使用isset()?我应该总是!empty()用来检查是否有东西?
例如,而不是
if(isset($_GET['gender']))...
Run Code Online (Sandbox Code Playgroud)
用这个
if(!empty($_GET['gender']))...
Run Code Online (Sandbox Code Playgroud) 我不明白之间的差别isset()和!empty().
因为如果设置了一个变量,它是不是与空的相同?
因此,看起来他们改变了访问具有未知密钥的数组会引发消息的方式。
<?php
if($myArray['foo']) { ... }
Run Code Online (Sandbox Code Playgroud)
25 年来,这只是发出一个通知,人们很乐意保持E_NOTICE沉默php.ini。对于(我认为)PhP 8.0,这现在引发了一个警告。
出于显而易见的原因,我不想保持沉默E_WARNING,所以我(以及世界上所有其他多年来使用未初始化变量的人,因为它们的值很简单null,就像在许多其他解释语言中一样)正在寻找一种可能的方法来摆脱与未定义的变量/数组/键相关的警告,同时报告所有其他(更严重的)编程错误,例如包含不存在的文件。
这个问题背后的原因是我必须处理大量用上述模式编写的代码;我只是无法全部重写,但我仍然需要切换到 PhP 8,所以不,我不是问如何使用isset().