php 生成ai文件,php_Generator php 生成器
php_Generator php 生成器
一個生成器函數看起來像一個普通的函數,不同的是普通函數返回一個值,而一個生成器可以yield生成許多它所需要的值。當一個生成器被調用的時候,它返回一個可以被遍歷的對象.當你遍歷這個對象的時候(例如通過一個foreach循環),PHP 將會在每次需要值的時候調用生成器函數,并在產生一個值之后保存生成器的狀態,這樣它就可以在需要產生下一個值的時候恢復調用狀態。一旦不再需要產生更多的值,生成器函數可以簡單退出,而調用生成器的代碼還可以繼續執行,就像一個數組已經被遍歷完了.
Note:一個生成器不可以返回值: 這樣做會產生一個編譯錯誤。然而return空是一個有效的語法并且它將會終止生成器繼續執行。
yield關鍵字:
生成器函數的核心是yield關鍵字。它最簡單的調用形式看起來像一個return申明,不同之處在于普通return會返回值并終止函數的執行,而yield會返回一個值給循環調用此生成器的代碼并且只是暫停執行生成器函數。
DEMO:
// 生成器語法
function xrange($start, $limit, $step){
if ($start < $limit) {
if ($step < 0) {
throw new LogicException('step must +ve');
}
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
} else {
if ($step >= 0) {
throw new LogicException('step must be -ve');
}
for ($i = $step; $i >= $limit; $i += $step) {
yield $i;
}
}
}
print_r(xrange(1, 9, 2));
// 使用php生成器實現range的函數功能
$newarr = array();
foreach(xrange(1, 9, 2) as $key => $val){
array_push($newarr, $val);
}
print_r($newarr);
echo "
";
echo '使用range生成數組
';
print_r(range(1, 9, 2));
結果:
Generator Object ( )
Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 )
使用range生成數組
Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 )
php 中的yield類似于 js, python 中的 yield 作用.
總結
以上是生活随笔為你收集整理的php 生成ai文件,php_Generator php 生成器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 等频直方图,等频直方图预估
- 下一篇: php代码编辑器6,优秀的PHP代码编辑