นิยามและการใช้งาน
ตั้งแต่รุ่น 7.1 ขึ้นไป PHP มี pseudo-type ใหม่ชื่อ iterable อ็อบเจ็กต์ใดๆ (เช่น อาร์เรย์) ที่ใช้งานอินเตอร์เฟซ Traversable จะถูกยอมรับ โดยชนิดนี้ใช้คอนสตรัคต์ foreach หรือฟังก์ชันเจเนอเรเตอร์ (generator function) ที่ผลลัพธ์ค่า (yield) ทีละค่า
รูปแบบไวยากรณ์
ฟังก์ชันสามารถมี iterable เป็นชนิดของพารามิเตอร์ เพื่อให้ฟังก์ชันยอมรับชุดค่าที่ใช้ในคำสั่ง foreach หากพารามิเตอร์ไม่รองรับลูป foreach PHP parser จะโยน TypeError
ตัวอย่าง
<?php $arr1=array("PHP","Java","Python"); function myfunc (iterable $arr1){ foreach ($arr1 as $lang){ echo $lang . "\n"; } } myfunc($arr1); ?>
ผลลัพธ์
PHP Java Python
ฟังก์ชัน PHP ยังสามารถคืนค่าชนิดข้อมูล iterable เช่น อาร์เรย์ได้ ใช้ฟังก์ชัน 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)
ตัวอย่างต่อไปนี้เป็นตัวอย่างของเจเนอเรเตอร์ที่มีชนิดการคืนค่าเป็น iterable:
ตัวอย่าง
<?php function gen(): iterable { yield 1; yield 2; yield 3; } gen(); ?>
รุ่น PHP
Pseudo-type Iterable ถูกนำเข้ามาใน PHP 7.1