为什么在 PHP 中将整数视为数组 ($int[$index]) 不会引发任何错误? [复制]

2023-11-23

这只是出于好奇而提出的一个简单问题。我花了一整天的时间调试我的 PHP 代码,发现问题是由于将整数视为数组造成的:

$x = $int[$index]; // this returns null, but no error at all

该整数实际上应该是一个数组,但是本来要传递数组的函数搞砸了,而是传递了数组中的第一个值。有什么原因不显示错误吗?访问数组上未定义的索引会产生错误,但是尝试访问整数上不存在的索引却不会?


我原本以为;它类型转换$int到一个字符串,因为[]是访问字符串位置的另一种方法。看起来似乎合理,这不会产生错误:

$string 'Hello';
echo $string[0]; // H

然而,事实并非如此:

$int = 1;
echo $int[0];

不输出任何内容并且var_dump($int[0])回报NULL.

有趣的是,同样的行为也表现在bool and float使用的操作是FETCH_DIM_R这是获取“array-value”中“index”处元素的值,并将其存储在“result”中。

来自手册Arrays:

Note:数组取消引用不是标量值的标量值string默默地屈服NULL,即不发出错误消息。

与此类似现象,其中不会产生错误。虫子#68110 and #54556:

$array['a'] = null;
echo $array['a']['non-existent'];

分配不起作用并不奇怪:

$int = 1;
$int[0] = 2;

警告:不能将标量值用作数组

所以PHP实际上是在尝试访问int, bool, float作为数组但不会生成错误。至少是从版本 4.3.0 到 7.2.2。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 PHP 中将整数视为数组 ($int[$index]) 不会引发任何错误? [复制] 的相关文章

  • php laravel Blade 模板不渲染

    我正在尝试使用 Laravel 和 twitter bootstrap 设置一个基本页面 我安装了 Laravel 并获得了通用的 你在这里 或 w e 图像 这样看起来很闪亮 对于 twitter bootstrap 我在 public
  • 将 #RRGGBB 十六进制值转换为 #AARRGGBB

    414141 与 AARRGGBB 的值是什么 52b531 又如何 我如何使用 PHP 转换它 Regards 奔腾10 AA 是 Alpha 通道 直接转换是将 AA 设置为 FF 以使其完全不透明 414141 becomes FF4
  • PHP 下载脚本输出损坏的文件

    我正在用 PHP 为我的 CMS 构建一个文件下载类 当时我注意到它以不同的编码格式输出文件 我尝试使用 readfile file get contents fread 但似乎都在做同样的事情 这就像与输出缓冲有关的东西 我使用脚本下载的
  • 是否可以在 UML 中可视化一堆函数

    我正在改进一个使用类和函数文件 只是包含各种函数的 php 文件 的内容管理系统 例如 我有一堂课叫Admin以及一个功能文件 其功能包括显示管理员概述 创建新管理员 编辑现有管理员 删除管理员 函数文件使用类并执行 mvc 概念的可视化部
  • Codeigniter PHP - 在锚点加载视图

    我在一个长页面的底部有一个表单 如果用户填写了表单但它不验证页面是否以典型的 codeigniter 方式重新加载 this gt load gt view template data 然而 由于表单位于页面底部 我需要将页面加载到那里 就
  • 用 PHP 截断文件末尾

    我有一个日志文件 我想在 PHP 读取该文件后将其截断 我的代码目前如下所示 fp fopen file r ftruncate fp 125000 fclose fp 但是 这会通过保留first1MB 不过 我想保留last1Mb 的文
  • 如何使用 php DOM 获取 内的值?

    我如何使用 php DOM 获取 内的值 这是我的 xml 中的一些代码
  • Symfony 生成器形式、原则和 M:N 关系

    我有一个基本的 M N 设置 包含三个表 candidate position 和 Candidate position 这是 MySQL Workbench 的 ERD 屏幕截图 现在 我们继续讨论表单 在 symfony 生成器的默认世
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • 计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么?

    计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么 用这个 echo substr count abca a will echo 2
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 当路由不存在时重定向 laravel 4

    我正在使用 laravel 4 当我的项目处于生产模式时 我得到 抱歉 找不到您要查找的页面 当我到达一条不存在的路线时 当我 grep 我的代码时 它在两个地方找到 vendor symfony debug Symfony Compone
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • 细胞的 fpdf 对齐

    我正在尝试使用生成 PDFfpdf我有一个小问题 我需要有 2 个单元格 如下所示 Address Line 1 Version Address Line 2 1 0 City 06 05 2011 我尝试过使用MultiCell 但没有运
  • Yii 未检测到骆驼案例操作

    伊伊正在给我404 Error如果我声明这样的操作 站点控制器 php public function actionRegisterUser 这就是我在main php label gt Register User url gt site
  • 从检查元素隐藏 ''

    我有这个 HTML 和 PHP 联系表
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • sqlite3和pdo_sqlite有什么区别

    我正在将我的 Web 应用程序从 MySQL 迁移到 SQLite 数据库 我发现有两个 PHP 扩展用于与 sqlite 通信 php sqlite3 dll and php pdo sqlite dll 什么扩展比较好 或者另一个问题

随机推荐

  • HTML中点击后如何保持选择?

    我正在编写一个 WYSIWYG 编辑器 不能使用像 TinyMCE 这样的东西 必须自己编写代码 并且我希望用户能够通过在 HTML 中添加标签来将文本设置为粗体 下划线 链接等 我遇到的问题是 当用户选择可编辑 div 中的文本 然后单击
  • Bash 检查是否存在不存在的文件?

    在 bash 中运行以下命令 stuff rpm ql
  • 使用 Eclipse + ADT 创建 Android 应用程序的“最小”源文件

    我试图使用 Eclipse ADT Android 开发工具包 来了解最小 Android 应用程序的结构 请您告知我需要的最小源文件集是什么 例如 src package MainActivity java res layout acti
  • Visual Studio 中的 Typescript AMD 模块

    我从使用 Visual Studio 2012 Ultimate 的 TypeScript 开始 我已经更改了 MSBuild 包括编译器命令中的 module amd 标记 编译器开始生成AMD模块 我在我的项目中包含了来自 Nuget
  • Python:乘法覆盖

    所以 我有一个自定义类 mul 与整数一起使用的函数 然而 在我的程序 在库中 中 它被以相反的方式调用 即2 x where x是我班的 有什么办法可以让它使用我的 mul 功能为此 只需将以下内容添加到类定义中即可 rmul mul
  • 返回匿名类型的简单方法(使使用 LINQ 的 MVC 成为可能)

    我想在使用 LINQ 特别是 LINQ to entities 的同时实现 MVC 我这样做的方法是让控制器使用 LINQ 生成 或调用生成的东西 结果集 然后将其返回到视图以显示数据 问题是 如果我这样做 return from o in
  • Xkb:如何将键码转换为键符号

    我只是尝试获取 KeyCode 和修饰符掩码 并使用 Xkb 扩展将其转换为 KeySym 我似乎无法弄清楚为什么这不起作用 很明显修饰符不匹配 但我不知道为什么 我什至不知道我是否正确转换了该组 include
  • 如何动态地将输入字段添加到表单中?

    我不是一个网络程序员 但我正在创建一个简单的网络应用程序 它有一个表单 用户可以在其中输入一系列点 x y z 但我不知道用户有多少即将进入 我不想猜测可能的最大值 也许是 100 并在表单上放置 100 个字段 因为它看起来很难看 当用户
  • 替换除字符串开头以外的所有字符(正则表达式)

    我正在尝试删除字符串数字中的所有减号 破折号 除了第一次出现之外 摆弄正则表达式 JavaScript 半小时后 仍然没有结果 有谁知道修复方法吗 Given 123 45 6 预期的 123456 Given 789 1 0 预期的 78
  • 为什么我的 TinyMCE 隐藏文本区域出现问题?

    我有大约7个textarea网页上的所有内容都是使用TinyMCE的富文本编辑器 然而 在页面加载时 只有其中 1 个可见 其余的则隐藏 用户可以单击 显示 链接 该链接将一一显示剩余的文本区域 但是 我有一个奇怪的问题 一切textare
  • 如何将 CSV 文件拆分为多个块并在 Java 代码中并行读取这些块

    我有一个非常大的 CSV 文件 1GB 它有 100 000 行 我需要编写一个 Java 程序来解析 CSV 文件中的每一行 以创建要发送的 HTTP 请求的正文 换句话说 我需要发送 100 000 个 HTTP 请求 这些请求与 CS
  • jQuery .text() 多个元素同一个类

    我试图在页面上的多个 未知数量 元素上使用 text 考虑 ul li class myClass element1 li li class myClass element2 li li class myClass element3 li
  • 旋转图像时如何避免OutOfMemory ex?

    public static boolean rotateBitmapByExifAndSave File targetFile if targetFile null targetFile exists targetFile canRead
  • MASM:从程序集中访问全局 C 变量

    我正在编写一个程序来转换图像并比较 C 语言和汇编语言处理数据的速度 我有3个项目 C语言的主要项目 C 中的 DLL 来转换图像 ASM中的DLL用于转换图像 在C DLL头文件中 我简单地写了 ifdef PROJEKTC EXPORT
  • 计算一列中行之间的Datediff(超过2条记录)

    我有一个表 其中有一列日期 我想找出它们之间的差异 我已经能够在您的网站上找到一个答案 让我了解两个日期之间的差异 但找不到任何可以让我了解每个客户的几条记录之间差异的答案 我的数据如下 Customer Pstng Date Henry
  • 如何限制 Chrome 中的并发(并行)浏览器请求?

    背景 我注意到几乎所有代理提供商都有 最大线程数 允许 根据我的理解 这意味着一次并发 并行浏览器请求的最大数量 由于现代网站可以有许多并行请求 因此如何在 Chrome 中限制并行请求 全局范围内整个浏览器 不仅针对每个主机 服务器 而且
  • C++ 排序跟踪索引[重复]

    这个问题在这里已经有答案了 您是否有一些有效的例程来返回带有数组中排序元素索引的数组 我认为使用 stl 存在一些方便的方法vector 您是否已经在不使用 stl 的情况下实现了高效的算法 或者您是否有伪代码或 C 代码的参考 使用 C
  • 工具栏和选项卡之间有一条线

    如何删除工具栏和tablayout之间的深线 我在google上搜索有人说 向工具栏和tablayout添加一些标高 我做了但它不起作用 从工具栏和tablyout中删除标高后 它也不起作用 请帮帮我 tablayout xml
  • Clojure 中向量和列表上 conj 的行为差异

    我是 clojure 的新手 最初我正在经历Clojure org and 作弊簿 我想知道不同行为的确切原因是什么conj在列表和矢量上 conj 1 2 3 4 1 2 3 4 conj list 3 2 1 4 4 3 2 1 当我将
  • 为什么在 PHP 中将整数视为数组 ($int[$index]) 不会引发任何错误? [复制]

    这个问题在这里已经有答案了 这只是出于好奇而提出的一个简单问题 我花了一整天的时间调试我的 PHP 代码 发现问题是由于将整数视为数组造成的 x int index this returns null but no error at all