网易首页 > 网易号 > 正文 申请入驻

在 PHP 中,循环是控制程序流程的核心结构

0
分享至

在 PHP 中,循环是控制程序流程的核心结构,合理使用循环能高效处理重复任务。以下是 PHP 中主要循环结构的详细说明及优化技巧:

一、基础循环结构

1.循环

for

php

for ($i = 0; $i < 10; $i++) {

echo $i; // 输出 0-9

  • 适用场景:已知循环次数时(如遍历固定长度数组)。
  • 优化技巧
    • 提前计算循环边界(避免在循环内调用函数):
  • php
  • $count = count($array); // 提前计算
  • for ($i = 0; $i < $count; $i++) { /* ... */ }

2.循环

foreach

php

$array = ['a', 'b', 'c'];

foreach ($array as $value) {

echo $value; // 输出 a, b, c

  • 特性
    • 自动处理数组边界。
    • 支持键值遍历:
  • php
  • foreach ($array as $key => $value) { /* ... */ }
  • 性能建议:PHP 7+ 中比遍历数组更快(因内部优化)。
  • foreach
  • for

3.循环

while

php

$i = 0;

while ($i < 10) {

echo $i++;

  • 适用场景:条件不确定时的循环(如读取文件直到结束)。

4.循环

do-while

php

$i = 0;

do {

echo $i++;

} while ($i < 10);

  • 特点:至少执行一次循环体。

二、循环控制语句

  • :立即退出循环。
  • break
  • :跳过当前迭代,进入下一次循环。
  • continue
  • 带标签的循环控制(PHP 7+):
  • php
  • outerLoop:
  • foreach ($array as $item) {
  • foreach ($item as $value) {
  • if ($value === 'stop') break outerLoop; // 直接跳出外层循环

三、性能优化技巧

1.减少循环内操作

  • 错误示范(每次循环重新计算):
  • php
  • for ($i = 0; $i < count($array); $i++) { /* ... */ }
  • 优化后
  • php
  • $count = count($array);
  • for ($i = 0; $i < $count; $i++) { /* ... */ }

2.避免循环内调用函数

  • 错误示范
  • php
  • foreach ($array as $item) {
  • $processed = processItem($item); // 每次循环调用函数
  • 优化建议:尽量将函数调用移到循环外(若逻辑允许)。

3.使用生成器处理大数据

php

function readLargeFile($path) {

$handle = fopen($path, 'r');

while (!feof($handle)) {

yield fgets($handle); // 逐行读取,避免内存爆炸

fclose($handle);

foreach (readLargeFile('huge.log') as $line) {

processLine($line);

4.循环与引用

  • 注意引用陷阱
  • php
  • $array = [['id' => 1], ['id' => 2]];
  • foreach ($array as &$item) { /* ... */ }
  • unset($item); // 必须取消引用,否则后续操作可能意外修改数组

四、特殊场景处理

1.遍历多维数组

php

$matrix = [[1, 2], [3, 4]];

foreach ($matrix as $row) {

foreach ($row as $value) {

echo $value; // 输出 1, 2, 3, 4

2.循环修改原数组

  • 使用引用
  • php
  • foreach ($array as &$value) {
  • $value *= 2; // 直接修改原数组

3.提前终止循环

php

$found = false;

foreach ($array as $item) {

if ($item === 'target') {

$found = true;

break; // 找到后立即退出

五、性能对比(PHP 8.1 测试)

循环类型

遍历 100 万次耗时

内存使用

for

45ms

2MB

foreach

32ms

2MB

while

48ms

2MB

do-while

47ms

2MB

结论:在数组遍历中性能最佳,在已知次数循环中表现良好。
foreach
for

六、常见问题

  1. 无限循环
  2. php
  3. while (true) {
  4. // 必须包含 break 条件!
  5. if ($condition) break;
  6. 浮点数比较陷阱
  7. php
  8. for ($i = 0; $i < 1.0; $i += 0.1) {
  9. // 可能因浮点精度问题多执行一次
  10. 数组键名修改
  11. php
  12. foreach ($array as $key => $value) {
  13. unset($array[$key]); // 修改正在遍历的数组会导致意外行为

七、最佳实践

  1. 优先使用遍历数组
  2. foreach
  3. 大数据处理用生成器()
  4. yield
  5. 循环前预计算不变条件(如数组长度)。
  6. 避免在循环内修改正在遍历的数组结构
  7. 使用跳过非必要逻辑,减少嵌套层级。

https://m.ximalaya.com/sound/911189203?from=pc
https://www.ximalaya.com/sound/911189203?from=pc

  1. continue

通过合理选择循环结构和优化技巧,可以显著提升 PHP 代码的执行效率和可读性。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
涉嫌严重违纪违法 赵福增、张秀成接受审查调查

涉嫌严重违纪违法 赵福增、张秀成接受审查调查

中国网
2026-03-30 15:59:04
和讯投顾黄林昆:电力批量跌停退潮,四月新主线呼之欲出

和讯投顾黄林昆:电力批量跌停退潮,四月新主线呼之欲出

和讯网
2026-03-30 19:55:10
中国将在长江水下开高铁

中国将在长江水下开高铁

环球网资讯
2026-03-30 09:38:29
美被曝正讨论派军进入伊朗提取约450公斤高浓缩铀

美被曝正讨论派军进入伊朗提取约450公斤高浓缩铀

界面新闻
2026-03-30 20:29:31
民企衰退,会给老百姓带来什么影响

民企衰退,会给老百姓带来什么影响

生命可以承受之轻
2026-03-29 08:55:03
工厂无单,广东老板看员工玩手机心生不悦,便安排焊工去做包装工

工厂无单,广东老板看员工玩手机心生不悦,便安排焊工去做包装工

捣蛋窝
2026-03-30 22:56:51
中国股市:唯一不坑人的指标“换手率”,大于10%说明可以入场!

中国股市:唯一不坑人的指标“换手率”,大于10%说明可以入场!

股经纵横谈
2026-03-30 16:47:55
浙江6大房企全军覆没

浙江6大房企全军覆没

地产微资讯
2026-03-30 14:54:08
海航最美空姐捡的是水,打的是所有航司官媒的脸

海航最美空姐捡的是水,打的是所有航司官媒的脸

民航大脑壳
2026-03-30 08:05:54
连续6场被弃用,不打球也能拿600万!球迷:你小子真滋润啊

连续6场被弃用,不打球也能拿600万!球迷:你小子真滋润啊

弄月公子
2026-03-30 23:05:01
中国癌症治疗迎来重大突破!国产生物制导导弹正式量产

中国癌症治疗迎来重大突破!国产生物制导导弹正式量产

Thurman在昆明
2026-03-30 09:36:56
输不起的政治:民主党为何沉迷这场“无王抗议”闹剧

输不起的政治:民主党为何沉迷这场“无王抗议”闹剧

斌闻天下
2026-03-30 07:15:03
杜月笙在河边钓鱼,遇到地痞要保护费,杜月笙:找你们老板过来

杜月笙在河边钓鱼,遇到地痞要保护费,杜月笙:找你们老板过来

千秋文化
2026-03-25 21:29:50
真不打球了!生涯狂赚2亿,如今疯狂钓鱼,妥妥的人生大赢家啊

真不打球了!生涯狂赚2亿,如今疯狂钓鱼,妥妥的人生大赢家啊

球童无忌
2026-03-30 14:39:34
广西壮族自治区发布强对流蓝色预警

广西壮族自治区发布强对流蓝色预警

北青网-北京青年报
2026-03-30 19:50:06
记者:热刺与德泽尔比即将就五年合同达成协议

记者:热刺与德泽尔比即将就五年合同达成协议

懂球帝
2026-03-30 19:25:55
被导弹打怕了?以色列向联合国抗议,称伊朗用集束炸弹违反国际法

被导弹打怕了?以色列向联合国抗议,称伊朗用集束炸弹违反国际法

混沌录
2026-03-28 19:43:17
军3天损失10多架飞机,伊朗:核工业城迪莫纳成合法打击目标

军3天损失10多架飞机,伊朗:核工业城迪莫纳成合法打击目标

大国观察眼
2026-03-31 01:30:30
章泽天带卡塔尔公主参观京东总部,身穿紫色套装,端庄大气

章泽天带卡塔尔公主参观京东总部,身穿紫色套装,端庄大气

日落于西
2026-03-30 16:40:28
一分钱不要,也得让你长记性!业主车位被霸占10天,奥迪车大变脸

一分钱不要,也得让你长记性!业主车位被霸占10天,奥迪车大变脸

火山詩话
2026-03-29 17:05:43
2026-03-31 02:52:49
建邺区生态科技岛人工智能商会
建邺区生态科技岛人工智能商会
南京市建邺区生态科技岛人工智能行业商会
246文章数 0关注度
往期回顾 全部

科技要闻

一句谎言引发的硅谷血案

头条要闻

特朗普:对伊朗袭击以炼油厂的回应“很快到来”

头条要闻

特朗普:对伊朗袭击以炼油厂的回应“很快到来”

体育要闻

想进世界杯,意大利还要过他这一关

娱乐要闻

全红婵聊到体重哭了,每天只吃一顿饭

财经要闻

本轮地缘冲突,A股凭什么走出独立行情

汽车要闻

限时12.58万起 银河星耀8远航家系列上市

态度原创

艺术
时尚
教育
游戏
数码

艺术要闻

这个62岁大爷厉害了!他画的超写实美女骗了多少人?.....

“小白鞋”今年春夏又火了!这5双怎么搭都好看

教育要闻

静待花开:一位母亲与青春期儿子的“破冰”之旅——林亭亭家教好故事

《红色沙漠》Steam热更新上线 修复光线重建问题

数码要闻

自在从容的「4K工作台」:vivo Pad6 Pro 深度体验报告

无障碍浏览 进入关怀版