ความหมายและการใช้งาน
ตั้งแต่เวอร์ชัน 7.1 เป็นต้นไป PHP ได้จัดเตรียม pseudo-type ใหม่ที่เรียกว่า iterable . ออบเจ็กต์ใดๆ (เช่น อาร์เรย์) ที่ใช้ สามารถข้ามผ่านได้ อินเทอร์เฟซเป็นที่ยอมรับ ประเภทนี้ใช้โครงสร้าง foreach หรือฟังก์ชันตัวสร้างที่ให้ค่าครั้งละหนึ่งค่า
ไวยากรณ์
ฟังก์ชันสามารถมี iterable เป็นประเภทของพารามิเตอร์เพื่อให้ฟังก์ชันยอมรับชุดของค่าที่ใช้ใน foreach คำแถลง. หากพารามิเตอร์ไม่รองรับลูป foreach ตัวแยกวิเคราะห์ PHP จะส่ง TypeError
ตัวอย่าง
<?php
$arr1=array("PHP","Java","Python");
function myfunc (iterable $arr1){
foreach ($arr1 as $lang){
echo $lang . "\n";
}
}
myfunc($arr1);
?> ผลลัพธ์
สิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -
PHP Java Python
ฟังก์ชัน PHP ยังสามารถส่งคืนชนิดข้อมูลที่ทำซ้ำได้ เช่น อาร์เรย์ เราใช้ is_iterable() ฟังก์ชันตรวจสอบชนิดของมูลค่าที่ส่งคืน
ตัวอย่าง
<?php
function newfunc ():iterable{
$arr2=[];
for ($i=1;$i<4;$i++){
$arr2[$i]=$i*2;
}
return $arr2;
}
$ret=newfunc();
var_dump (is_iterable($ret));
?> ผลลัพธ์
สิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -
bool(true)
ต่อไปนี้เป็นตัวอย่างของตัวสร้างที่มีประเภทการส่งคืนแบบวนซ้ำได้
ตัวอย่าง
<?php
function gen(): iterable {
yield 1;
yield 2;
yield 3;
}
gen();
?> เวอร์ชัน PHP
pseudo-type ที่ทำซ้ำได้ถูกนำมาใช้ใน PHP 7.1