ความหมายและการใช้งาน
ตั้งแต่เวอร์ชัน 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