PHP for 循环与带范围的 foreach [关闭]

2024-02-27

其中哪一个对于性能和可读性更好?

foreach(range(0,10000) as $i) {} // 3.847 ms

for($i = 0; $i < 10000; ++$i) {} // 0.663 ms

Edit:做了一个基准测试,最后一个几乎快了 6 倍。


传统的for循环比foreach + range。第一个仅使用整数比较和递增,而最后一个必须创建一个(可能很大)数组,然后通过移动内部数组光标并检查是否到达末尾来提取每个元素。

如果你执行这个你可以看到简单的forforeach + range:

$t0 = microtime(true);
for ($i = 0; $i < 100000; $i++) {
}
echo 'for loop: ' . (microtime(true) - $t0) . ' s', PHP_EOL;

$t0 = microtime(true);
foreach (range(0, 100000) as $i) {
}
echo 'foreach + range loop: ' . (microtime(true) - $t0) . ' s', PHP_EOL;

最好还是用传统的for作为一种习惯,您需要迭代给定的次数,但最终在大多数情况下您不会看到很大的性能改进(考虑到上面的示例迭代了 100k 次,如果您减少次数迭代次数,差异较小)。

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

PHP for 循环与带范围的 foreach [关闭] 的相关文章

  • 包含包含文件的 php 文件

    这是目录结构 global php includes class bootstrap php includes init php plugins myplugin php 这是这些文件中的代码 start php require inclu
  • 在一个后台为MYSQL的网站上集成搜索

    我有一个位置搜索website http www jammulinks com对于一个城市 我们首先收集该城市所有可能类别的数据 如学校 学院 百货商店等 并将其信息存储在单独的表中 因为每个条目除了名称 地址和电话号码外都有不同的详细信息
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 一段 R 代码会影响 foreach 输出中的随机数吗?

    我使用运行模拟foreach and doParallel并与随机数 名为random在代码中 简而言之 我模拟一个足球联赛 随机生成所有比赛的获胜者以及相应的结果 在dt base没有比赛进行 在dt ex1 and dt ex24场比赛
  • 使用字符串中的变量名称访问变量值,R

    Intro 一个数据集有大量的age year变量 age 1990 age 1991 etc 我有一个字符串值数组length age years 表示这些变量 使得age years 1 回报 age 1990 etc Need 我想搜
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • 解开 Knuth 的结:如何重构意大利面条式代码?

    这个问题的灵感来自如何将流程图转化为实施 https stackoverflow com questions 36647765它询问如何通过算法消除goto代码中的语句 这answer https stackoverflow com a 3
  • 模拟/存根在 PHPUnit 中实现 arrayaccess 的类的对象

    这是我正在为其编写测试套件的类的构造函数 它扩展了 mysqli function construct Config c store config file this gt config c do mysqli constructor pa
  • 如何在 Smarty 中打印 json

    我从 api 获取 json 如何使用 Smarty 打印 json Json格式 first name jinu last name mk loginid email protected cdn cgi l email protectio
  • VBA中的字符串是可以迭代的数组吗?

    VBA中字符串是数组吗 例如 我可以像在 C C 中那样迭代它吗 做这样的事情 char myArray 10 for int i 0 i lt length i cout lt lt myArray i VBA 中的等价物是什么 它的行为
  • 如何让Gmail像加载进度条一样

    我想在页面的中心和顶部创建一个像 Gmail 一样的加载进度条 并适用于所有浏览器 这是基本代码
  • magento成功页面变量

    我正在尝试捕获一些 magento 成功页面变量以传递给我们的广告公司 到目前为止 我已经得到了这个 但变量没有输出任何内容 数据需要采用以下格式 price1 price2 price3 qty1 qty2 qty3 sku1 sku2
  • Minizinc:生成有效的转变

    希望有人能帮助我解决这个问题 最初的问题是生成有效的班次 如下所述 我有这样的数组 m m m o o l l m m m l m m m 具有固定长度 S 其中 m 是工作 o 是办公室 我自由了 我需要确保至少每 6m 就有两个 l 在
  • Java-如何将黑白图像加载到二进制中?

    我在 FSE 模式下使用 Java 和 swing 我想将完全黑白图像加载为二进制格式 最好是二维数组 并将其用于基于掩码的每像素碰撞检测 我什至不知道从哪里开始 过去一个小时我一直在研究 但没有找到任何相关的东西 只需将其读入Buffer
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28
  • 如何在 PHP 中从字符串类名实例化? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何创建返回方法名称的新实例 不幸的是我收到这个错误 错误 类名必须是有效的对象或字符串 这是我的代码 class Foo public f

随机推荐

  • 将数据存储到 DOM - 元素值与数据属性

    要将值存储在 DOM 元素中 我们可以通过data属性 abc data item 1 检索做 abc data item 但今天我了解到我们也可以这样做 abc 0 item 1 检索做 abc 0 item 它们之间有什么区别 哪一个更
  • Python 多线程在 IO 任务中没有任何好处?

    我正在尝试用 python 读取数千小时的 wav 文件并获取它们的持续时间 这本质上需要打开 wav 文件 获取帧数并考虑采样率 下面是代码 def wav duration file name wv wave open file nam
  • uitableviewcell 上的 tableview 中出现重复行

    我发现一些帖子与我的问题相似但不完全相同 在我的应用程序中 用户可以在多个 uitableviews 之间导航以深入了解所需的结果 当用户向前 然后向后 然后向前等时 可以注意到行正在被重绘 重写 并且文本变得越来越粗 我发现在一些帖子中这
  • 如何将函数参数传递给 boost::thread_groups::create_thread()

    我是新来的增强线程我试图了解如何将函数参数传递给boost thread groups create thread 功能 在阅读了一些教程和 boost 文档后 我了解到可以简单地将参数传递给这个函数 但我无法让这个方法起作用 我读到的另一
  • 使用 BigQuery 的 QUALIFY 运算符有什么优势?

    我刚刚发现了 BigQuery 的 QUALIFY 运算符 并且一直在以下位置阅读相关内容 https cloud google com bigquery docs reference standard sql query syntax q
  • 如何使用react-google-recaptcha重置Google recaptcha

    看起来谷歌验证码的工作方式是这样的 如果使用特定令牌进行了验证尝试 则无法再次使用它 文档指出 您将需要调用 grecaptcha reset 来要求最终用户再次使用 reCAPTCHA 进行验证 我正在尝试使用react google r
  • Objects.hash() 与 Objects.hashCode(),需要澄清

    从 Java 7 开始 我们有 o hashCode Objects hashCode o Objects hash o 前两个与空检查大致相同 但最后一个是什么 当提供单个对象引用时 返回值不会 不等于该对象引用的哈希码 这是为什么 我的
  • 避免嵌套查询

    避免嵌套查询是多么重要 我总是学会像躲避瘟疫一样避开它们 但它们对我来说是最自然的事情 当我设计查询时 我首先编写的是嵌套查询 然后我将其转换为联接 这有时需要花费很多时间才能正确 并且很少会带来很大的性能提升 有时确实如此 那么他们真的那
  • 将 (Boost) Asio 与 Android NDK 结合使用的限制

    目前在 Android 平台上将 Asio 与 NDK 结合使用有哪些限制 除了 Asio 还有其他你肯定会选择的选择吗 因此没有限制 唯一令人担忧的是缺乏官方支持 你必须构建升压库 参考我的帖子https stackoverflow co
  • 滚动视图不起作用 IOS 7

    我有一个滚动视图 其中有 20 个 UItextview 滚动视图不起作用 我在 viewdidload 中设置了以下内容 self MainScroll contentSize CGSizeMake 320 1800 它仍然不滚动 但是
  • Pip 出现问题,缺少已安装的模块?

    我已经重新安装了 python packaging 并且出现了这个 pip help Traceback most recent call last File usr bin pip line 6 in
  • 在 Emacs 中编写 HTML5?

    在 Emacs 中编写 HTML5 的最佳解决方案是什么 是否有一种模式可以进行一致性检查 我最好的建议是使用nxml 模式 http www thaiopensource com nxml mode 如果您使用该平台 则可以在多个 Lin
  • 从 GitHub 删除电子邮件也会删除提交

    我有 2 封与我的 Github 帐户关联的电子邮件 一封是主电子邮件 另一封是辅助电子邮件 当我从帐户中删除辅助电子邮件时 几乎一半的提交都消失了 删除辅助电子邮件地址时如何保留我的提交 None
  • 如何在 Powershell 中发出经过身份验证的 Web 请求?

    在 C 中 我可能会这样做 System Net WebClient w new System Net WebClient w Credentials new System Net NetworkCredential username au
  • 哈希中的 ActiveRecord 对象不会被垃圾收集——是错误还是某种缓存功能?

    我有一个简单的 ActiveRecord 模型 名为Student表中有 100 条记录 我在 Rails 控制台会话中执行以下操作 ObjectSpace each object ActiveRecord Base count gt 0
  • 如何仅对数组的特定部分应用连接?

    我正在获取一个数组并在该数组变量中对其进行排序 let arrayStr oldArr join 我的数组在控制台中看起来像这样 a text1 b text2 c text3 d text3 我想要的是让它看起来像这样 a text1 b
  • 如何在 C# 中获取子列表

    我有一个List
  • aChartengine 图表的菜单和上下文菜单

    是否可以 以前有人这样做过吗 我不知道从哪里开始 我主要需要菜单 而不是上下文菜单 我的 预算饼图 课程 public class ExpensesByCategoriesPieChart extends AbstractChart pri
  • 我使用 NSDateFormatter 的方式有什么问题?

    NSDateFormatter dateFormatter NSDateFormatter alloc init dateFormatter locale NSLocale alloc initWithLocaleIdentifier en
  • PHP for 循环与带范围的 foreach [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 其中哪一个对于性能和可读性更好 fo