gpt4 book ai didi

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

转载 作者:行者123 更新时间:2023-12-03 23:45:29 33 4
gpt4 key购买 nike

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

Notice: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php on line 10

Notice: Undefined index: my_index C:\wamp\www\mypath\index.php on line 11

Warning: Undefined array key "my_index" in C:\wamp\www\mypath\index.php on line 11

第 10 行和第 11 行如下所示:

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

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

为什么会突然出现?我多年来一直使用这个脚本,从来没有遇到过任何问题。

我该如何修复它们?


This is a General Reference question for people to link to as duplicate, instead of having to explain the issue over and over again. I feel this is necessary because most real-world answers on this issue are very specific.

Related Meta discussion:

最佳答案

通知/警告: undefined variable

虽然 PHP 不需要变量声明,但它确实建议这样做,以避免一些安全漏洞或错误,这些漏洞或错误会忘记为稍后将在脚本中使用的变量赋值。 PHP 在未声明变量的情况下所做的是发出 E_WARNING 级别的错误。

此警告可帮助程序员发现拼写错误的变量名。此外,未初始化的变量还有其他可能的问题。因为它是stated在 PHP 手册中,

Relying on the default value of an uninitialized variable is problematic in the case of including one file into another which uses the same variable name.

意味着在主文件中未初始化,这个变量可能被包含文件中的变量重写,这可能导致不可预知的结果。为避免这种情况,最好对 php 文件中的所有变量进行初始化

处理问题的方法:

  1. 推荐:声明您的变量,例如,当您尝试将字符串附加到 undefined variable 时。或者使用 isset()在引用它们之前检查它们是否被声明,如:

     //Initializing a variable
    $value = ""; //Initialization value; 0 for int, [] for array, etc.
    echo $value; // no error
  2. 使用空合并运算符抑制错误。

     // Null coalescing operator
    echo $value ?? '';

    对于古老的 PHP 版本 (< 7.0) 可以使用带有三元的 isset()

     echo isset($value) ? $value : '';

    请注意,它本质上仍然是一种错误抑制,尽管只是针对一个特定的错误。因此,它可能会阻止 PHP 通过标记单元化变量来帮助您。

  3. @ operator 抑制错误.由于历史原因离开这里,但说真的,这不应该发生。

注意:强烈建议只实现第 1 点。

注意: undefined index / undefined offset /警告:未定义的数组键

当您(或 PHP)尝试访问数组的未定义索引时,会出现此通知/警告。

处理问题的方法几乎相同:

  1. 推荐:声明数组元素:

     //Initializing a variable
    $array['value'] = ""; //Initialization value; 0 for int, [] for array, etc.
    echo $array['value']; // no error
  2. 使用空合并运算符抑制错误":

     echo $_POST['value'] ?? '';

    对于数组,此运算符更合理,因为它可以与您无法控制的外部变量一起使用。因此,请考虑仅将其用于外部变量,例如 $_POST/$_GET/$_SESSION 或 JSON 输入。虽然最好先预定义/初始化所有内部数组。

    更好的是,验证所有输入,将其分配给局部变量,并在代码中一直使用它们。因此,您要访问的每个变量都是有意存在的。

相关:

关于php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982920/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com