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生成技术的一站式有声绘本创作平台

下载
$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

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

豆包大模型
豆包大模型

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

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

31

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

9

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

32

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

1

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

3

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

23

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

51

2026.01.26

热门下载

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

精品课程

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

共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号