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 循环来检索循环每次迭代的每个键和值。

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

艺映AI
艺映AI

艺映AI - 免费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 编程基础知识的人来说,我们将在下一篇文章中开始进入稍微更高级的领域。

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

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

精品课程

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

共98课时 | 7.5万人学习

WordPress视频教程
WordPress视频教程

共23课时 | 9.7万人学习

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

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