PHP foreach 循环中的数组是如何读取的?

2023-12-20

我们都听说过如何在for循环,我们应该这样做:

for ($i = 0, $count = count($array); $i < $c; ++$i)
{
    // Do stuff while traversing array
}

而不是这个:

for ($i = 0; $i < count($array); ++$i)
{
    // Do stuff while traversing array
}

出于性能原因(即初始化$count会打电话的count()仅一次,而不是调用count()每个条件检查)。

如果在一个foreach循环,我这样做:

$array = do_something_that_returns_an_array();

foreach ($array as $key => $val)
{
    // Do stuff while traversing array
}

而不是这个:

foreach (do_something_that_returns_an_array() as $key => $val)
{
    // Do stuff while traversing array
}

假设情况允许我使用其中之一?也就是说,PHP 在这两种情况下都只调用该函数一次,还是像这样for第二种情况会一次又一次地调用该函数?


foreach() is 使用迭代器实现 http://php.net/manual/en/language.oop5.iterations.php- 因此它只调用一次返回数组的函数,然后使用指向现有结果集的迭代器继续处理每个项目。

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

PHP foreach 循环中的数组是如何读取的? 的相关文章

  • Ubuntu 18.04升级后php7.2-curl无法安装

    今天从 16 04 升级到 18 04do release upgrade d 在升级过程中 我被告知一些软件包将被删除 其中包括 删除 libperl5 22 lxc common perl modules 5 22 php imagic
  • For 循环内的 For 循环 Javascript

    由于某种原因 该语句跳过了一些数据 我是否缺少一个 continue 语句某处或某事 这是代码 for var i 0 len data ORDER STATUS 0 ORDERS length i lt len i if data ORD
  • 在Python 3中将二进制字符串转换为字节数组

    尽管有很多相关的问题 但我找不到任何符合我的问题的问题 我想更改二进制字符串 例如 0110100001101001 转换成字节数组 同一个例子 b hi 我试过这个 bytes int i for i in 011010000110100
  • CSS 无法与 CodeIgniter 一起使用

    这是我的 CI 代码的一部分 class page extends CI Controller var Page public function construct parent construct this gt Page 1 this
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • 如何从控制器访问 Zend Framework 应用程序的配置?

    我有一个基于 Zend 框架的应用程序快速开始 http framework zend com docs quickstart setup 我已经让演示工作起来 现在正在实例化一个新的模型类来完成一些实际工作 在我的控制器中 我想将配置参数
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • PHP mkdir() 和 fopen() 不起作用 - 权限问题? umask问题?

    以下 PHP 脚本无法创建目录 它也将无法创建文件 当目录已经存在时 ini set error reporting E ALL define ABSPATH SERVER DOCUMENT ROOT echo ABSPATH br br
  • 在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是什么?

    看来类常量只涵盖PDO PARAM BOOL PDO PARAM INT and PDO PARAM STR用于绑定 您只是将十进制 浮点 双精度值绑定为字符串还是有更好的方法来处理它们 MySQLi 允许使用 d 类型表示 double
  • Twig:选择某些块并渲染它们

    我正在将 twig 模板引擎集成到 PHP 应用程序中 特别是 我想使用 twig 引擎来渲染表单 了解了 symfony2 如何使用 twig 渲染表单小部件后 他们有一个巨大的模板文件 其中包含所有小部件 如下所示 block pass
  • 如何 grep 遍历数组,同时过滤掉匹配项?

    有没有一种快速简便的方法来 grep 遍历数组 找到满足某些测试的元素and从原始数组中删除这些 例如我想要 a 1 7 6 3 8 4 b grep filter gt 5 a now b 7 6 8 and a 1 3 4 换句话说 我
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • PHP 时间间隔

    我正在寻找一个看起来应该非常简单的解决方案 但似乎我不能在这里找到任何好的答案 而且我自己似乎无法让它发挥作用 我正在寻找的是设置开始时间 结束时间 然后迭代给定时间间隔之间的一组时间 例如 上午 9 00 下午 5 00 是开始时间 这些
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • 无法与站点通信以检查致命错误

    无法与站点通信以检查致命错误 因此 PHP 更改已恢复 您需要通过其他方式上传 PHP 文件更改 例如使用 SFTP 有什么解决办法 我正在 WordPress 中编辑头文件 遇到这个问题 尝试这个 我有同样的问题并决定调查一下 更改 wp
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt

随机推荐

  • 类别和包中的类组织在不同版本的 Pharo 中如何工作?

    有人可以解释一下 Pharo 中的类组织在不同版本的 Pharo 中是如何工作的吗 所有类都是 Smalltalk 全局的一部分 一直都是 似乎一直这样 类可以有一个类别 但这只是一种标签 一直都是 好像还是这样 但有时类别会以某种方式映射
  • 用 ggvis 将 RMarkdown 编织到 Word

    当我尝试用以下内容编写 RMarkdown 文档时ggvis绘图到 Word 我从 Rstudio 收到以下消息 Error Functions that produce HTML output found in document targ
  • 将过滤器从一个交叉过滤器数据集应用到另一个交叉过滤器

    我有两个数据集 它们具有相似的列 维度 但按行进行不同的分组并包含不同的度量 Ex 数据集1 Year Category SubCategory Value01 Value02 2000 Cars Sport 10 11 2000 Cars
  • IntelliJ 显示单元测试未涵盖的更改行

    在日常工作中 我打算为我更改的代码编写测试 我的工作流程通常是这样的 查找要更改的代码 编写失败的测试 更改代码 观看测试通过 在提交之前 我运行所有测试 但实际上 我可以在不知不觉中更改有关我们的测试覆盖范围的任何行 我现在所做的通常是查
  • strstr 显示出现之前的字符串

    我想在针出现后得到字符串的第一个位 如下所示 user strstr email protected cdn cgi l email protection true 但这仅适用于 PHP 版本 5 3 0 我有 5 2 9 有什么办法可以得
  • 用于 javascript 的 QT 5.4 WebEngine 开发工具

    我正在使用 QWebEngineView 和 QWebEnginePage 创建一个应用程序 我想知道是否有办法激活 Web 开发工具 我需要调试 html javascript 代码 就像您在 Chrome 上使用 Google Deve
  • 读取一堆 JSON 文件,转换它们,然后保存它们

    我正在努力实现这一点Gulp 阅读每一个 json给定目录 包括子目录 中的文件 以某种方式改变它们 例如添加新的根级别等 将它们保存到一个新目录中 保持原始结构 我迷失的地方是如何通过管道读取 写入 JSONsrc 我现在有以下骨架 gu
  • int索引 = Convert.ToInt32(e.CommandArgument.ToString());不管用

    请帮我 int index Convert ToInt32 e CommandArgument ToString 这对我不起作用 它显示异常 输入字符串的格式不正确 e CommandArgument不为空 我正在从中获得价值 你应该像下面
  • Imagemagick SVG 到 PDF 转换图像质量很差

    我们正在尝试将 SVG 宽度 737 高度 521 转换为 A4 尺寸的 PDF 问题是生成的图像质量非常糟糕 这就是我们正在做的 SVG 带有远程图像 URL
  • 领域模型与数据库模型不同吗?

    我理解 DDD 中的概念 但在实践中却有点令人困惑 我正在使用 C SQL Server 和 EF 我发现根据我的数据库模式 持久性模型看起来与我的聚合不同 为了定义干净 漂亮的聚合 实体和值对象 我的域模型看起来与数据库模型不同 此外 如
  • 如何通过引用传递枚举?

    我有一个带有四个键的枚举 我将其作为接口程序的输入 并且我想将枚举按值传递给接口函数 该函数已经变得相当长 枚举是这样的 enum MYKEYS W S O L 还有一个布尔数组 我必须通过引用传递 这也有点棘手 bool key 4 fa
  • 32位OR如何保持加载指令?(RISC风格32位架构)

    我对指令大小和可寻址空间有点困惑 我假设指令大小应该与地址位的大小相同 我在书中没有找到足够的解释 如果我是正确的 那么理论上如果我们有一个 2 32 32位架构 RISC风格 中的内存可寻址单元 字节 4字节大小的加载指令如何保存操作码和
  • 如何在 Firefox 中检查预检结果缓存的内容

    火狐浏览器支持吗http www w3 org TR cors preflight result cache http www w3 org TR cors preflight result cache如果是的话 如何查看其内容 如何将其与
  • Selenium python - 启动 Firefox Webdriver 时拒绝访问 /hub/session

    我最近刚刚开始使用 Selenium Webdriver 而不是 Selenium 1 0 并且我正在努力解决一个完全阻止我运行测试的问题 当尝试启动 webdriver Firefox 时 我收到一个 WebDriverException
  • 如何从活动中的RecyclerView上的onClick启动活动

    大家好 当我点击时 我正在尝试开始活动RecyclerView 当我在自定义适配器中添加代码时它就会启动 但是当我在 Activity 中编写它时 它只需给我 Log 上的位置 所以有什么帮助吗 这是活动中的 OnClick 代码 这就是我
  • C# Windows 服务

    Scenario 我创建了一个 Windows 服务 但是每当我启动它时 它都会立即停止 该服务是从一个控制台应用程序构思出来的 该应用程序用于订阅事件并监视服务器上的进程 如果进程发生任何事情 即它被杀死 那么该事件将触发进程重新启动 我
  • Bash:使用变量作为关联数组名称

    我正在编写一个 Bash 脚本来简化从我们的主站点到多个机构的文件复制 在此脚本中 我尝试使用变量作为关联数组名称 但出现错误 代码如下 bin bash declare A GROUP1 declare A GROUP2 declare
  • 创建 DLL 的编程语言:C++ 或 C#

    这不是编程疑问 我将为某些应用程序编写一个 DLL 我有两个选项可供选择 C 或 C 我应该用哪种语言编写 DLL 这会影响功能吗 我是一个完全的新手 不了解 C 和 C 但不了解 C 中的一些小程序 用 C 或 C 编写 DLL 的优点和
  • 列表元素与数据框描述何时发生?

    这可能非常简单 但我不知道出了什么问题 我在列出 DataFrame 的元素时遇到问题 有时会列出 DataFrame 的元素 有时只是对数据列的数量和类型的描述 我知道行数是一个因素 但即使我只有几行 我也只能得到描述 例如 如果我有一个
  • PHP foreach 循环中的数组是如何读取的?

    我们都听说过如何在for循环 我们应该这样做 for i 0 count count array i lt c i Do stuff while traversing array 而不是这个 for i 0 i lt count array