PHP Yinelenebilirler
PHP - Yinelenebilir nedir?
Yinelenebilir, bir döngü ile döngülenebilen herhangi bir değerdir foreach()
.
Sözde iterable
tür PHP 7.1'de tanıtıldı ve işlev argümanları ve işlev dönüş değerleri için bir veri türü olarak kullanılabilir.
PHP - Yinelenebilirleri Kullanma
Anahtar iterable
sözcük, bir işlev bağımsız değişkeninin veri türü olarak veya bir işlevin dönüş türü olarak kullanılabilir:
Örnek
Yinelenebilir bir işlev argümanı kullanın:
<?php
function printIterable(iterable $myIterable) {
foreach($myIterable as $item) {
echo $item;
}
}
$arr = ["a",
"b", "c"];
printIterable($arr);
?>
Örnek
Yinelenebilir bir dönüş yapın:
<?php
function getIterable():iterable {
return ["a", "b", "c"];
}
$myIterable = getIterable();
foreach($myIterable as $item) {
echo $item;
}
?>
PHP - Yinelenebilirler Oluşturma
diziler
Tüm diziler yinelenebilirdir, bu nedenle herhangi bir dizi yinelenebilir gerektiren bir işlevin argümanı olarak kullanılabilir.
yineleyiciler
Arabirimi uygulayan herhangi bir nesne, Iterator
yinelenebilir bir işlev gerektiren bir işlevin argümanı olarak kullanılabilir.
Bir yineleyici, bir öğe listesi içerir ve bunlar arasında dolaşmak için yöntemler sağlar. Listedeki öğelerden birine bir işaretçi tutar. Listedeki her öğe, öğeyi bulmak için kullanılabilecek bir anahtara sahip olmalıdır.
Bir yineleyici şu yöntemlere sahip olmalıdır:
current()
- İşaretçinin o anda işaret ettiği öğeyi döndürür. Herhangi bir veri türü olabilirkey()
Listedeki geçerli öğeyle ilişkili anahtarı döndürür. Yalnızca bir tamsayı, kayan nokta, boolean veya dize olabilirnext()
İşaretçiyi listedeki bir sonraki öğeye taşırrewind()
İşaretçiyi listedeki ilk öğeye taşırvalid()
Dahili işaretçi herhangi bir öğeye işaret etmiyorsa (örneğin, listenin sonunda next() çağrıldıysa), bu false döndürmelidir. Başka bir durumda true döndürür
Örnek
Yineleyici arabirimini uygulayın ve yinelenebilir olarak kullanın:
<?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);
?>