PHP Iterable
PHP - Apa itu Iterable?
Iterable adalah nilai apa pun yang dapat diulang dengan foreach()
loop.
Tipe iterable
pseudo diperkenalkan di PHP 7.1, dan dapat digunakan sebagai tipe data untuk argumen fungsi dan nilai pengembalian fungsi.
PHP - Menggunakan Iterables
Kata iterable
kunci dapat digunakan sebagai tipe data argumen fungsi atau sebagai tipe kembalian suatu fungsi:
Contoh
Gunakan argumen fungsi yang dapat diubah:
<?php
function printIterable(iterable $myIterable) {
foreach($myIterable as $item) {
echo $item;
}
}
$arr = ["a",
"b", "c"];
printIterable($arr);
?>
Contoh
Kembalikan yang dapat diubah:
<?php
function getIterable():iterable {
return ["a", "b", "c"];
}
$myIterable = getIterable();
foreach($myIterable as $item) {
echo $item;
}
?>
PHP - Membuat Iterables
Array
Semua array adalah iterable, jadi array apa pun dapat digunakan sebagai argumen dari fungsi yang memerlukan iterable.
Iterator
Objek apa pun yang mengimplementasikan Iterator
antarmuka dapat digunakan sebagai argumen dari fungsi yang memerlukan iterable.
Iterator berisi daftar item dan menyediakan metode untuk mengulangnya. Itu membuat pointer ke salah satu elemen dalam daftar. Setiap item dalam daftar harus memiliki kunci yang dapat digunakan untuk menemukan item tersebut.
Iterator harus memiliki metode berikut:
current()
- Mengembalikan elemen yang ditunjuk pointer saat ini. Ini bisa berupa tipe data apa sajakey()
Mengembalikan kunci yang terkait dengan elemen saat ini dalam daftar. Itu hanya bisa berupa bilangan bulat, float, boolean, atau stringnext()
Memindahkan penunjuk ke elemen berikutnya dalam daftarrewind()
Memindahkan penunjuk ke elemen pertama dalam daftarvalid()
Jika pointer internal tidak menunjuk ke elemen apa pun (misalnya, jika next() dipanggil di akhir daftar), ini akan menghasilkan false. Ini mengembalikan true dalam kasus lain
Contoh
Implementasikan antarmuka Iterator dan gunakan sebagai iterable:
<?php
// Create an Iterator
class MyIterator implements Iterator {
private $items = [];
private $pointer = 0;
public
function __construct($items) {
// array_values() makes
sure that the keys are numbers
$this->items =
array_values($items);
}
public function current() {
return $this->items[$this->pointer];
}
public function
key() {
return $this->pointer;
}
public function next() {
$this->pointer++;
}
public function rewind() {
$this->pointer =
0;
}
public function valid() {
// count() indicates how many items are in the list
return $this->pointer < count($this->items);
}
}
// A
function that uses iterables
function printIterable(iterable $myIterable) {
foreach($myIterable as $item) {
echo $item;
}
}
// Use the iterator as an iterable
$iterator = new MyIterator(["a", "b", "c"]);
printIterable($iterator);
?>