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 [关闭] 的相关文章

  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • 在 VB.Net 中将字节数组转换为整数

    我想知道在 vb net 中将字节数组 长度 4 转换为整数的最佳方法是什么 我知道 BitConverter 但执行函数调用来执行应该可以通过复制 4 字节内存来完成的操作似乎相当浪费 同样 将单 双精度数从二进制表示形式转换为单 双精度
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 最小化代表性整数的误差之和

    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 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 使用 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
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 如何循环 Record

    I have Records类型Record https www typescriptlang org docs handbook utility types html recordkt export interface List name
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • Bash 中单行 while 循环的语法

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

随机推荐

  • 将数据存储到 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