索引 null 变量时未引发 php 未定义索引通知

2024-03-23

我很想知道 PHP 中的以下行为是否是有意的。而且,如果有意的话,通过创建索引来从空变量初始化数组被认为是可以接受的(如第一个代码片段中所做的那样)?

error_reporting(E_ALL);
$arr = null;

echo ($arr["blah"]===null) ? "null" : $arr["blah"];

$arr["blah"] = "somevalue";
echo "<br>";
echo ($arr["blah"]===null) ? "null" : $arr["blah"];
var_dump ($arr);

这输出

null
somevalue

array (size=1)
   'blah' => string 'somevalue' (length=9)

但是,如果首先初始化数组(请参见下面的代码),我会得到完全相同的输出,但是当我第一次尝试时会给出“未定义索引”通知$arr["blah"]

error_reporting(E_ALL);
$arr = array();

echo ($arr["blah"]===null) ? "null" : $arr["blah"];

$arr["blah"] = "somevalue";
echo "<br>";
echo ($arr["blah"]===null) ? "null" : $arr["blah"];
var_dump ($arr);

如果数组为空,PHP 将不会尝试进行比较。

在第二种情况下,由于设置了数组,因此确实发生了比较。 PHP 不会检查它是否为空。

您的三元数正在尝试访问变量 $arr["blah"],而不是在进行比较之前检查它是否已设置。

正确的写法是:

error_reporting(E_ALL);
$arr = array();

if(isset($arr["blah"])) echo ($arr["blah"]===null) ? "null" : $arr["blah"];

$arr["blah"] = "somevalue";
echo "<br>";
if(isset($arr["blah"])) echo ($arr["blah"]===null) ? "null" : $arr["blah"];
var_dump ($arr);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

索引 null 变量时未引发 php 未定义索引通知 的相关文章

  • 获取所有多个列表框值

    我有一个多重选择列表框 我使用 javascript 在其中插入项目 在某个时刻 我需要获取所有条目的值 选定的和未选定的 我目前正在使用这段代码
  • 如何将控制器放入 Laravel 5.1.3 的文件夹中?

    我是 Laravel 的新手 我试图通过将控制器放入文件夹中来组织控制器 但它似乎不起作用 我的文件夹结构是这样的 app Http Controllers Admin ShowDashboard php My 显示仪表板 php文件是这样
  • 创建动态 Laravel 访问器

    我有一个Product模型以及Attribute模型 之间的关系Product and Attribute是多对多 在我的Product模型 我正在尝试创建一个动态访问器 我熟悉 Laravel 的访问器和修改器功能 如文档所示 here
  • 以多列显示数据

    您好 我需要从 mySQL 表构建一个包含四列的表 这是我现在拥有的
  • require_once 中的相对路径不起作用

    我有以下结构 otsg gt class gt authentication php gt database php gt user php gt include gt config inc php gt encryption php gt
  • 一个电子邮件地址中可以有多少个@符号?

    是否有任何规则要求在任何电子邮件 ID 中包含指定数量的 符号 如果我们要使用 PHP 检查电子邮件 ID 是否有效 我就会想到 如果引用多个 被允许 我必须问你为什么需要这些信息 拜托拜托please不要尝试编写正则表达式 函数或其他任何
  • CTYPE_ALNUM 的奇怪之处

    我的 PHP 函数 CTYPE ALNUM 有一个奇怪的问题 if i do PHP words if ctype alnum words Echo Don t work else Echo Work 这将回显 工作 但是如果我有一个表格
  • Typescript:使用 Lambda 函数从两个数组中查找公共对象

    我正在使用 Typescript 来解决以下问题 我想搜索列表中的对象 而不是简单的字母或数字 下面是两个数组 我想在单独的列表中获取常见的对象不使用任何第三方库 firstArray id 4 name Tata id 11 name M
  • 服务器发送的事件在脚本完成之前不会更新

    我有一个更新数据库的小脚本 目前处理时间大约需要一分钟左右 但是随着数据库的增加 时间也会增加 我想在脚本运行时向用户提供更新 以便他们知道脚本的状态并且它仍在运行 我实现了服务器端事件 虽然它有效 但在脚本完全完成之前 不会将任何更新发布
  • 在 Windows 中设置 PHP SOAP 扩展

    我对如何根据网上的内容在 Windows 中设置 PHP SOAP 扩展有很多困惑 您能帮帮我吗 我该怎么做呢 有什么建议参考吗 参考PHP docs http php net manual en install windows exten
  • sql 查询不适用于 order by

    这是我原来有效的查询 Select FROM story st sentences s speaker sp WHERE st lesson id 1 AND st speaker id sp speaker id AND st sente
  • 如何避免 在选择文件后删除值?

    我正在开发一个网络上传器 但是 我发现了一些东西 我不知道这是否是一个问题 这是我发现的 当我选择文件时
  • bcrypt 中的盐的要点

    抱歉 如果这是一个愚蠢的问题 我只是想知道 bcrypt 中的盐有什么意义 我的意思是 如果您有以下用于从密码创建哈希的代码 function generateSalt salt 2a 13 salt salt 11111111111111
  • 查找最近的城市,例如 oodle.com

    因此 我正在尝试开发一个显示用户列表的应用程序 该网站应该检测用户位置 我为此使用 maxmind api 然后显示用户位置 用户指定半径内的城市的列表 我该怎么做呢 MaxMind API 让我可以通过 IP 地址检测用户的城市 但如何找
  • PHP - 搜索字符串中的特定单词数组并与可选的 + 或 - 匹配

    我需要在字符串中搜索特定单词并将匹配结果作为变量 我在数组中有一个特定的单词列表 names array Blue Gold White Purple Green Teal Purple Red drag Glowing looks to
  • mod_fcgid + PHP + apache 锁定

    我正在运行一个相当典型的 LAMP 堆栈 其中 PHP 通过 mod fcgid 运行 考虑到服务器收到的流量 我认为服务器处于 高负载 状态 存在一个间歇性问题 当访问依赖 PHP 的站点时 Apache 报告所有连接都处于 正在发送内容
  • 删除 PHP 中的标头

    为了允许缓存 PHP 生成的文件 我想确保 Pragma no cache 标头是not放 但是 如何删除可能已经设置的标头 这就对了could有可能 有人在代码中的某个地方写了header Pragma no cache 现在我想确保标头
  • php 中

    的新行

    我目前在数据库中有很多笑话 这些笑话都是用 nl2br 格式化的 它会产生 This is just dummy text Lorem ipsum dolor sit amet consectetur adipiscing elit br
  • cmd的字符集

    C Users Kolink gt php r echo C Users Kolink gt echo 正如你所看到的 一个程序输出一个 结果是 但使用echo命令给出所需的字符 并且 我可以配置 PHP 也许是脚本开头的某个命令 来输出正
  • 如何获取MySQL中最后更新的行的ID?

    如何使用 PHP 获取 MySQL 中最后更新行的 ID 我找到了这个问题的答案 SET update id 0 UPDATE some table SET column name value id SELECT update id id

随机推荐

  • repo 同步命令的替代方案是什么?

    我是 git 新手 我想在完成后手动执行清单文件repo init 而不是做repo sync 测量正常 git 命令和repo sync在不同的情况下 但我不确定 repo 使用哪个 git 命令 我知道repo只是大型代码库的 git
  • 寻找返回黑盒模型最大输出的最佳输入组合

    在我的工作中将人工神经网络应用于回归任务时 我面临的挑战之一是 为了找到给定输入范围的最佳结果 我必须将多维网格输入到我的模型中 然后简单地选择最高的价值 然而 这总体上是一个计算成本非常高的解决方案 下面的文字长度可能会令人恐惧 但这只是
  • 在数据框或向量中查找非数字数据

    我读了一些冗长的数据read csv 令我惊讶的是 数据是以因子而不是数字的形式出现的 所以我猜测数据中必须至少有一个非数字项 我怎样才能找到这些物品的位置 例如 如果我有以下数据框 df lt data frame c 1 2 3 4 f
  • Django 在 save() 中获取对象的 ID

    我有一些固定的数字 可以说是num 1000现在我的字段需要是 object id 和 num 的总和 我需要在 save 中使用它 如下所示 def save self args kwargs num 1000 self special
  • 将单个数组分成两个数组的代码是怎样的?

    当我使用所需 URL 的 JSON 解析时 我在 nsarray 中得到以下响应 但在这里我不喜欢得到 2 1 4 4 6 5 8 7 10 9 12 和 11在单个数组中 我必须获得两个数组的总响应 我的意思是一个数组集将包含 2 4 6
  • 如何从Javascript数组中删除“[”和“]”符号

    我在用着react js用于构建我的仪表板 我想转换这样的数组 旧版本 进入这个 新版本 in javascript 所以我可以将新版本的数组放入 JSON 数组中 如下所示 newArray 我认识一个map函数返回一个数组 我知道这是一
  • 无法在 git bash 中使用命令 telnet

    我尝试使用命令telnet在 Git Bash 中 但它显示此错误 bash telnet 未找到命令 我的操作系统是 Windows 10 如有任何想法 我们将不胜感激 那是因为 git 没有提供 telnet 在 Windows 中 您
  • 我可以用一份许可证在两台机器上安装 VS 吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是一名兼职教授 教授数据库和编程课程 我拥有一台运行 Windows 的台式机和笔记本电脑 我拥有 VS 2010 的学术版 并在家中安
  • Apollo 客户端从缓存中删除 Item

    我正在使用带有 React 的 Apollo 客户端 我用许多不同的变量查询帖子 所以我在不同的 缓存 中有一篇文章 现在我想删除一个帖子 所以我需要从所有 缓存 中删除这个特定的帖子 const client new ApolloClie
  • 如何在Xcode编译中集成.proto文件?

    我正在尝试将 Android 应用程序移植到 ios 和 mac xcode 生态系统 我的应用程序使用 Google proto buffs 并使用说明https github com alexeyxo protobuf swift bl
  • 使用 Intellij 在远程服务器上部署/调试 Java 代码

    我想在远程服务器上运行我的java代码以获得更快的速度 该服务器非常强大 我想要的是将我的 Intellij 连接到该远程服务器并运行我的代码 但我仍然想在我的本地计算机 即我的笔记本电脑 上使用 IntelliJ 我在 IntelliJ
  • jQuery 的 space 和 > 选择器有什么区别?

    两者有什么区别space http docs jquery com Selectors descendant ancestordescendant and gt http docs jquery com Selectors child选择器
  • 如何通过文件将参数传递给tortoiseproc.exe?

    我正在使用 java 中的 Runtime getRuntime exec 以编程方式生成要提交到 cmd exe 的命令 该命令是tortoiseproc忽略形式的命令 tortoiseproc command ignore path f
  • 在 Python 3 中创建抽象属性会导致 AttributeError

    如何在 python 中创建抽象属性 import abc class MyClass abc ABC abc abstractmethod property def foo self pass 结果出现错误AttributeError a
  • 如何将 PostgreSQL 数据库迁移到 SQLServer 数据库?

    我有一个 PostgreSQL 数据库 我想将其迁移到 SQL Server 架构和数据 我很穷 所以我不想付任何钱 我也很懒 所以不想做太多工作 目前我正在逐个桌子做这个 大约有100个桌子要做 这是极其乏味的 有什么技巧可以达到我想要的
  • JavaScript 支持的网站的自动导航

    我需要在 Python 中自动导航 JavaScript 支持的网站 以便我可以抓取一些内容 我碰到鸡足 http groups csail mit edu uid chickenfoot quickstart html 这是一个 Fire
  • 使用 CakePHP 分页助手进行引导分页

    我正在尝试让 CakePHP 的分页助手与 bootstrap 很好地配合 也就是说 我希望我的分页元素看起来像 bootstrap 的 但由 CakePHP 生成 目前我的视图页面上有这个 它产生以下标记 div class pagina
  • 在 C 中使用 mmap 读取二进制文件时出现段错误

    我正在尝试在 C 中使用 mmap 只是为了看看它到底是如何工作的 目前我尝试使用 mmap 逐字节读取二进制文件 我的代码是这样的 include
  • Android - 在 invalidate() 上重绘后监听器

    在我要求视图失效后 我希望在视图完成重绘后收到通知 正如中所述这个答案 https stackoverflow com a 5073130 72746 the invalidate 方法不调用视图的onDraw UI 立即执行 但会在消息队
  • 索引 null 变量时未引发 php 未定义索引通知

    我很想知道 PHP 中的以下行为是否是有意的 而且 如果有意的话 通过创建索引来从空变量初始化数组被认为是可以接受的 如第一个代码片段中所做的那样 error reporting E ALL arr null echo arr blah n