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 循环中的数组是如何读取的? 的相关文章

  • dart中解析对象(不支持的操作:无法添加到固定长度列表)

    我有一个用户对象 当用户登录 注册时 该对象保存到云 Firestore 数据库中 因此 当用户登录时 将从数据库中检索用户对象 并且一切正常 直到我尝试对列表 usersProject 执行 添加 操作 Add the new proje
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 在 VB.Net 中将字节数组转换为整数

    我想知道在 vb net 中将字节数组 长度 4 转换为整数的最佳方法是什么 我知道 BitConverter 但执行函数调用来执行应该可以通过复制 4 字节内存来完成的操作似乎相当浪费 同样 将单 双精度数从二进制表示形式转换为单 双精度
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 最小化代表性整数的误差之和

    Given n integers between 0 10000 as D1 D2 Dn where there may be duplicates and n can be huge I want to find k distinct r
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 如何知道Matlab中系统命令执行过程中经过的时间?

    我有一个运行系统脚本的 Matlab 代码 该脚本可能会因命令运行而停止 我想知道是否有一种方法可以让程序知道它是否花费了很长时间并执行其他操作 这是代码 tic status cmdout system iperfcmd The prog
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a
  • Bash 中单行 while 循环的语法

    我无法找到分号和 或大括号的正确组合 我想这样做 但作为命令行中的一句 while 1 do foo sleep 2 done while true do foo sleep 2 done 顺便说一句 如果您在命令提示符下将其输入为多行 如

随机推荐

  • 类别和包中的类组织在不同版本的 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