Định nghĩa và cách sử dụng
Từ phiên bản 7.1, PHP cung cấp một pseudo-type (kiểu giả) mới gọi là iterable. Bất kỳ object (như array) nào triển khai interface Traversable đều được chấp nhận. Kiểu này sử dụng cấu trúc foreach hoặc một generator function sinh ra từng giá trị một.
Cú pháp
Một function có thể dùng iterable làm kiểu tham số để cho phép function chấp nhận tập giá trị dùng trong foreach. Nếu tham số không hỗ trợ foreach, PHP sẽ ném TypeError.
Ví dụ
iterable làm tham số function
<?php
$arr1 = array("PHP", "Java", "Python");
function myfunc(iterable $arr1) {
foreach ($arr1 as $lang) {
echo $lang . "\n";
}
}
myfunc($arr1);
?>
Kết quả
PHP Java Python
iterable làm kiểu trả về
Function PHP cũng có thể trả về kiểu iterable như array. Ta dùng is_iterable() để kiểm tra kiểu giá trị trả về.
<?php
function newfunc(): iterable {
$arr2 = [];
for ($i = 1; $i < 4; $i++) {
$arr2[$i] = $i * 2;
}
return $arr2;
}
$ret = newfunc();
var_dump(is_iterable($ret));
?>
Kết quả
bool(true)
Generator với kiểu trả về iterable
<?php
function gen(): iterable {
yield 1;
yield 2;
yield 3;
}
gen();
?>
Phiên bản PHP
Pseudo-type iterable được giới thiệu từ PHP 7.1.