0

0

深入探索WordPress中的面向对象编程:控制结构II

王林

王林

发布时间:2023-09-02 12:13:06

|

649人浏览过

|

来源于php中文网

原创

深入探索wordpress中的面向对象编程:控制结构ii

如果您一直在跟踪我们整个系列,那么您无疑知道我们正在从初学者的角度研究面向对象编程的概念。

具体来说,我们正在为那些想要熟悉范例以及如何在 WordPress 上下文中应用这些概念的人查看该主题;但是,在我们开始使用面向对象编程和 WordPress 之前,我们必须使用 PHP 提供的基本功能奠定基础。

最终,我们致力于通过创建 WordPress 插件来创建面向对象编程的实际示例。但在此之前,我们还需要讨论一些事情。

如果这是您第一次阅读本系列,那么我建议您查看之前的文章,因为本系列中的每篇文章都建立在前一篇文章的基础上。另一方面,如果您更熟悉面向对象编程,那么当我们开始实际应用这些想法时,您可能需要重新访问该系列。

到目前为止,我们已经讨论了以下主题。

  1. 简介
  2. 课程
  3. 类型
  4. 控制结构:条件语句

在本文中,我们将通过查看 PHP 提供的各种类型的循环来结束对控制结构的讨论。

控制结构回顾

如果您读过上一篇文章,那么您会记得“控制结构”是指语言(在我们的例子中为 PHP)提供的结构,它允许我们根据数字修改整个程序中的代码。条件。

在上一篇文章中,我们研究了如何通过使用条件语句来做到这一点,这些语句将强制程序根据条件(例如,如果设置了一个变量,如果条件为真,依此类推)。

循环

但这并不是我们拥有的唯一控制类型。除了条件之外,我们还能够迭代(或循环)数据集,以便我们可以对数据集中的每个项目采取操作。我们可以添加数据、删除数据、显示数据、对数据排序等等。

例如,假设我们有一组数据,可能有 10 个帖子,并且我们想要循环并打印出每个帖子的标题和日期。循环允许我们做到这一点。

无论您想要做什么,PHP 提供了四种类型的循环,允许我们循环访问数据集。在本文中,我们将查看每个示例以及每个示例的一些细微差别,以便在开始编写面向对象代码时可以使用另一组控制结构。

for 循环

由于编写代码方式的性质,for 循环通常被认为是最复杂的循环。它的流程读起来有点不自然。

通常,我们习惯于逐行编写代码,以便将每条指令设置在一行上;然而,对于 for 循环,我们有一个稍微不同的方法。首先,我将分享一个基本示例,我们将介绍它的各个方面,然后我们将研究更详细的方法。

下面是一个基本示例,它将数到 10,并在屏幕上显示每个数字:

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

在循环的第一行(在 for 语句后的括号内),我们执行以下操作:

  • 初始化变量 $i 并将其设置为零
  • 设置一个条件,以便在 $i 时继续运行
  • 每次迭代后将 $i 增加值 1(使用后增量运算符)

在循环体中,我们只是使用 PHP 的 echo 函数来打印 $i 的当前值。当循环处理指令时,我们将在屏幕上看到 0 - 9 的打印结果(因为我们从零开始运行,而 $i 小于 10)。

不同的人有不同的阅读代码的技巧,所以我要推荐的策略可能不是最适合你的,但是当我阅读这些类型的循环时,我通常会这样阅读:

$i 从零开始,当 $i 小于 10 时,执行循环体,然后将 $i 加 1。

问题是 $i 可以从任何值开始,可以计数到任意数量,并且可以按任何值递增。

我们对 for 循环做的工作越多,您就越有可能发现一些可以优化性能的东西。不过,目前,for 循环的基础知识已经介绍完毕,高级技术有点超出了本文的范围。

foreach 循环

foreach 循环与 for 循环类似,因为它们迭代数据集,但它们是按顺序执行的。这意味着没有简单的方法可以迭代列表中的每一项(例如两个项目)(例如,可以使用 $i + 2 in for 循环)。

这种类型的循环可以说是最具可读性的。对于我们的示例,假设我们有一个数组,并且数据数组包含以下名称:Alpha、Bravo、Charlie、Delta、Echo 和 Foxtrot。数组的名称存储在名为 $names 的变量中。

在这种情况下,我们可以设置一个 foreach 循环来迭代名称并将每个名称显示在屏幕上,如下所示:

$names = array( 'Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot' );
foreach ( $names as $name ) {
    echo $name;
}

设置非常简单,不是吗?

正如我们在上一节中分享了一种读取初始 for 循环的方法一样,您可以通过以下方式读取 foreach 循环:

对于名称集合中的每个名称,将其显示在屏幕上。

或者,也许更一般地说:

对于集合中的每个元素,将其显示在屏幕上。

还有什么吗?

foreach 循环还有另一个方面,我们可能会在本系列后面更详细地介绍,但主要思想是,如果您熟悉关联数组,即数组使用键进行索引并且具有关联值,您可以设置 foreach 循环来检索循环每次迭代的每个键和值。

例如,假设我们有以下关联数组:

PaperFake
PaperFake

AI写论文

下载
$heroes = array( 'alien' => 'Superman', 'human' => 'Batman' );

当使用这样的关联数组时,您还可以设置一个 foreach 循环,如下所示:

foreach ( $heroes as $type => $name ) {
    echo $name . ' is a ' . $type;
}

这将导致输出读取诸如“超人是外星人”之类的内容,因为“超人”是值,“外星人”是他的类型(或他的键)。

此循环的更通用形式如下:

foreach ( $collection as $key => value ) {
    // Work goes here
}

没什么特别复杂的。

while 循环

介绍了 for 循环的变体后,是时候将我们的注意力转向 while 循环了,其中有两种变体(尽管它们的名称不同:while 循环和 do 循环),但它们只有很小的区别。

但是在我们了解它们有何不同之前,我们先来看看 while 循环,它的基本格式、如何使用它以及它与之前的 for 循环。

首先,while循环的基本格式如下:

while ( condition ) {
    // do work
}

请注意,此循环与之前的循环不同,它接受条件作为初始语句的一部分(这就是我们在上一篇文章中介绍条件的原因)。

循环的工作原理是首先检查条件是否为真,执行循环体中的代码块,然后再次检查条件。这意味着 while 循环可以执行任何工作单元,只要指定的条件计算结果为 true。

所以,当然,您可以迭代数字列表,运行数据集合,但您也可以在布尔值仍然为 true 的情况下执行某些操作。一旦标志达到 false,则 while 循环将终止。

让我们看一个从数组中弹出元素的示例。假设初始数组有 100 个元素,我们将一直这样做,直到数组剩下 50 个元素:

while ( 50 !== count ( $elements ) ) {
    array_pop( $elements );
}

这里,条件将继续评估为 true,直到 $elements 数组中的项目数减少到 50 项。

正如我们对之前的循环所做的那样,这是读取 while 循环的一种方法:

当这个条件成立时,执行以下代码。

当然,代码看起来就是这样,不是吗?

do 循环

最后,do 循环几乎完全类似于 while 循环,只不过在检查条件之前至少会迭代一次。

在看示例之前,先介绍一下 do 循环的基本结构:

do {
    // do work
} while ( condition );

比较清楚,对吧?

因此,让我们设置一个非常基本的示例,其中创建一个数组并仅用偶数填充它。为此,我们需要:

  • 保存数字的数组
  • 一个变量,用于保存我们迭代前 100 个偶数的次数

话虽如此,我们可以将代码设置为如下所示:

$i = 1;
$even_numbers = array();

do {

    if ( 0 === ( $i % 2 ) ) {
        $even_numbers[] = $i;
    }
    
    $i++;

} while ( $i <= 100 );

最后,与其余循环一样,您可以通过以下方式读取这些类型的循环:

执行以下工作块,然后检查以下条件是否为真。如果是这样,请继续完成工作。

还有什么吗?

当谈到 do 循环时,如果您正在使用集合,则需要在处理集合之前确保该集合为空,因为它将在检查条件是否为真之前执行循环块中的代码。如果您尝试处理空数据集,这可能会导致错误。

当然,如果您打算这样做,那么其他循环之一可以更好地针对这种操作进行优化。

只有当您有一组数据或者您要执行一个您知道在检查之前需要至少执行一次的过程时,才使用 do 循环指示应执行的执行次数的条件。

下一步是什么?

通过这些内容,我们已经列出了开始讨论面向对象编程的函数、属性、范围和其他基础方面所需要做的一切。

对于那些认为本系列或多或少介绍了一些 PHP 编程基础知识的人来说,我们将在下一篇文章中开始进入稍微更高级的领域。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

46

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

178

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

51

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

532

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十三期_前端开发
第二十三期_前端开发

共98课时 | 8.4万人学习

WordPress视频教程
WordPress视频教程

共23课时 | 9.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号