創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

這期內容當中小編將會給大家?guī)碛嘘Pphp中yield關鍵字的介紹,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1、什么yield?
該yield關鍵字從發(fā)電機函數返回數據:
生成器函數的核心是yield關鍵字。以最簡單的形式,yield語句看起來很像return語句,yield不是停止函數的執(zhí)行并返回,而是為循環(huán)生成器的代碼提供一個值,并暫停生成器函數的執(zhí)行。
2、什么是生成器函數?
生成器函數實際上是編寫迭代器的一種更緊湊,更有效的方法。它允許您定義一個函數(您的xrange),該函數將
在 您遍歷該函數時_計算并返回_ 值:
foreach (xrange(1, 10) as $key => $value) {
echo "$key => $value", PHP_EOL;
}這將創(chuàng)建以下輸出:
0 => 1 1 => 2 … 9 => 10
您也可以控制$key在foreach使用
yield $someKey => $someValue;
在generator函數中,$someKey是您想要顯示的內容$key并$someValue是中的值$val。在問題的示例中為$i。
3、與正常功能有何不同?
現在您可能想知道為什么我們不僅僅使用PHP的本機range函數來實現該輸出。是的,你是。輸出將是相同的。區(qū)別在于我們到達那里的方式。
當我們使用rangePHP,將執(zhí)行它,在內存中創(chuàng)建一個數字的整個陣列,并return認為 整個陣列
的foreach循環(huán),然后將去在它和輸出的值。換句話說,foreachwill將對數組本身進行操作。該range功能和foreach唯一的“交談”一次。可以將其想像為通過郵件獲取包裹。送貨員會把包裹交給您,然后離開。然后解開整個包裝,取出里面的任何東西。
當我們使用生成器函數時,PHP將逐步進入該函數并執(zhí)行,直到遇到結尾或yield關鍵字為止。當遇到a時yield,它將把當時的值返回外循環(huán)。然后,它返回到生成器函數,并從產生的地方繼續(xù)。由于您xrange擁有一個for循環(huán),它將執(zhí)行并屈服直到$max達到。想像它foreach和發(fā)生器打乒乓球。
4、我為什么需要那個?
顯然,生成器可用于解決內存限制。根據您的環(huán)境,執(zhí)行range(1, 1000000)遺囑會使您的腳本致命,而對生成器執(zhí)行同樣的操作會很好。或如Wikipedia所述:
由于生成器僅根據需要計算其屈服值,因此它們對于表示昂貴或無法立即計算的序列很有用。這些包括例如無限序列和實時數據流。
發(fā)電機也應該很快。但是請記住,當我們談論快速時,我們通常會以很小的數目交談。因此,在您開始運行并更改所有代碼以使用生成器之前,請進行基準測試以了解在何處有意義。
生成器的另一個用例是異步協(xié)程。該yield關鍵字不僅返回值,但它也接受他們。有關此內容的詳細信息,請參見下面鏈接的兩個出色的博客文章。
5、從什么時候起可以使用yield?
生成器已在 PHP 5.5中
引入。嘗試使用yield該版本之前的版本會導致各種解析錯誤,具體取決于關鍵字后面的代碼。因此,如果您從該代碼中遇到了解析錯誤,請更新您的PHP。
上述就是小編為大家分享的php中yield關鍵字的介紹了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)-成都網站建設公司行業(yè)資訊頻道。
網站名稱:php中yield關鍵字的介紹-創(chuàng)新互聯(lián)
分享路徑:http://www.chinadenli.net/article16/iiodg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、ChatGPT、虛擬主機、網站建設、網站排名、營銷型網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)