Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

เครื่องกำเนิด PHP


แนะนำตัว

สำรวจชุดข้อมูลขนาดใหญ่โดยใช้โครงสร้างการวนซ้ำ เช่น foreach จะต้องใช้หน่วยความจำขนาดใหญ่และใช้เวลาในการประมวลผลมาก ด้วย เครื่องกำเนิดไฟฟ้า เป็นไปได้ที่จะวนซ้ำชุดข้อมูลโดยไม่มีค่าโสหุ้ยเหล่านี้ ฟังก์ชันเครื่องกำเนิดไฟฟ้าจะคล้ายกับฟังก์ชันปกติ อย่างไรก็ตาม แทนที่จะส่งคืนคำสั่งในฟังก์ชัน ตัวสร้างจะใช้ ผลตอบแทน คำหลักที่จะดำเนินการซ้ำ ๆ เพื่อให้มีค่าที่จะทำซ้ำ

คำหลักผลตอบแทนเป็นหัวใจของกลไกการกำเนิด แม้ว่าการใช้งานจะคล้ายกับการส่งคืน แต่ก็ไม่ได้หยุดการทำงานของฟังก์ชัน มีค่าถัดไปสำหรับการวนซ้ำและหยุดการทำงานของฟังก์ชันชั่วคราว

ค่าที่ให้ผล

A for loop ให้ค่าแต่ละค่าของตัวแปรการวนซ้ำภายในฟังก์ชันตัวสร้าง

ตัวอย่าง

<?php
function squaregenerator(){
   for ($i=1; $i<=5; $i++){
      yield $i*$i;
   }
}
$gen=squaregenerator();
foreach ($gen as $val){
   echo $val . " ";
}
?>

เนื่องจากคำสั่ง foreach พยายามแสดง $val เป็นครั้งแรก ตัวสร้างสแควร์เจนเนอเรเตอร์จะให้องค์ประกอบแรก รักษา $i และหยุดการทำงานชั่วคราวจนกว่า foreach จะวนซ้ำในครั้งต่อไป ผลลัพธ์จะคล้ายกับ foreach loop ปกติ

ผลลัพธ์

1 4 9 16 25

range() . ของ PHP ฟังก์ชั่นส่งคืนรายการจำนวนเต็มตั้งแต่ $start ถึง $stop โดยมีช่วงเวลา $step ระหว่างตัวเลขแต่ละตัว โปรแกรมต่อไปนี้ใช้ range() เป็นตัวสร้าง

ตัวอย่าง

<?php
function rangegenerator($start, $stop, $step){
   for ($i=$start; $i<=$stop; $i+=$step){
      yield $i;
   }
}
foreach (rangegenerator(2,10,2) as $val){
   echo $val . " ";
}
?>

ผลลัพธ์

เอาต์พุตคล้ายกับ range(2,20,2)

2 4 6 8 10

อาร์เรย์ที่เชื่อมโยงสามารถใช้เป็นตัวสร้างได้

ตัวอย่าง

<?php
function arrgenerator($arr){
   foreach ($arr as $key=>$val){
      yield $key=>$val;
   }
}
$arr=array("one"=>1, "two"=>2, "three"=>3, "four"=>4);
$gen=arrgenerator($arr);
foreach ($gen as $key=>$val)
echo $key . "=>" . $val . "\n";
?>

ผลลัพธ์

one=>1
two=>2
three=>3
four=>4