首頁  >  文章  >  後端開發  >  深入探索WordPress中的物件導向程式設計:控制結構II

深入探索WordPress中的物件導向程式設計:控制結構II

王林
王林原創
2023-09-02 12:13:06581瀏覽

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

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

$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 程式設計基礎知識的人來說,我們將在下一篇文章中開始進入稍微更高級的領域。

以上是深入探索WordPress中的物件導向程式設計:控制結構II的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn