中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中yield關鍵字的介紹

發布時間:2020-07-02 11:43:15 來源:億速云 閱讀:150 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關php中yield關鍵字的介紹,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1、什么yield?

該yield關鍵字從發電機函數返回數據:

生成器函數的核心是yield關鍵字。以最簡單的形式,yield語句看起來很像return語句,yield不是停止函數的執行并返回,而是為循環生成器的代碼提供一個值,并暫停生成器函數的執行。

2、什么是生成器函數?

生成器函數實際上是編寫迭代器的一種更緊湊,更有效的方法。它允許您定義一個函數(您的xrange),該函數將

在 您遍歷該函數時_計算并返回_ 值:

foreach (xrange(1, 10) as $key => $value) {
    echo "$key => $value", PHP_EOL;
}

這將創建以下輸出:

0 => 1
1 => 2
…
9 => 10

您也可以控制$keyforeach使用

yield $someKey => $someValue;

在generator函數中,$someKey是您想要顯示的內容$key$someValue是中的值$val。在問題的示例中為$i

3、與正常功能有何不同?

現在您可能想知道為什么我們不僅僅使用PHP的本機range函數來實現該輸出。是的,你是。輸出將是相同的。區別在于我們到達那里的方式。

當我們使用rangePHP,將執行它,在內存中創建一個數字的整個陣列,并return認為 整個陣列

的foreach循環,然后將去在它和輸出的值。換句話說,foreachwill將對數組本身進行操作。該range功能和foreach唯一的“交談”一次。可以將其想像為通過郵件獲取包裹。送貨員會把包裹交給您,然后離開。然后解開整個包裝,取出里面的任何東西。

當我們使用生成器函數時,PHP將逐步進入該函數并執行,直到遇到結尾或yield關鍵字為止。當遇到a時yield,它將把當時的值返回外循環。然后,它返回到生成器函數,并從產生的地方繼續。由于您xrange擁有一個for循環,它將執行并屈服直到$max達到。想像它foreach和發生器打乒乓球。

4、我為什么需要那個?

顯然,生成器可用于解決內存限制。根據您的環境,執行range(1, 1000000)遺囑會使您的腳本致命,而對生成器執行同樣的操作會很好。或如Wikipedia所述:

由于生成器僅根據需要計算其屈服值,因此它們對于表示昂貴或無法立即計算的序列很有用。這些包括例如無限序列和實時數據流。

發電機也應該很快。但是請記住,當我們談論快速時,我們通常會以很小的數目交談。因此,在您開始運行并更改所有代碼以使用生成器之前,請進行基準測試以了解在何處有意義。

生成器的另一個用例是異步協程。該yield關鍵字不僅返回值,但它也接受他們。有關此內容的詳細信息,請參見下面鏈接的兩個出色的博客文章。

5、從什么時候起可以使用yield?

生成器已在 PHP 5.5中

引入。嘗試使用yield該版本之前的版本會導致各種解析錯誤,具體取決于關鍵字后面的代碼。因此,如果您從該代碼中遇到了解析錯誤,請更新您的PHP。

上述就是小編為大家分享的php中yield關鍵字的介紹了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东至县| 竹北市| 玛多县| 宁海县| 大方县| 银川市| 来宾市| 建湖县| 晴隆县| 辽宁省| 尼玛县| 额济纳旗| 镇远县| 阿勒泰市| 信丰县| 沈丘县| 札达县| 积石山| 加查县| 安国市| 武邑县| 河间市| 达拉特旗| 扶余县| 醴陵市| 莆田市| 信阳市| 仁寿县| 沙雅县| 林芝县| 寻乌县| 彰化市| 鲁山县| 神池县| 丰台区| 大足县| 长泰县| 通海县| 乌拉特前旗| 红河县| 昌平区|