PHP iterable obyektlar
PHP iterable’lari
PHP-da iterable - bu foreach() sikli orqali o‘tish mumkin bo‘lgan qiymat.
iterable psevdo-tipi PHP 7.1 da joriy qilingan va undan funksiya argumentlari hamda funksiya qaytaradigan qiymatlar uchun ma’lumot tipi sifatida foydalanish mumkin.
Iterable massiv yoki Iterator interfeysini amalga oshiradigan obyekt bo‘lishi mumkin.
PHP - iterable’lardan foydalanish
iterable kalit so‘zidan funksiya parametrining ma’lumot tipi yoki funksiyaning qaytariladigan tipi sifatida foydalanish mumkin:
Misol
Iterable funksiya parametri:
<?php
function printIterable(iterable $x) {
foreach($x as $item) {
echo $item;
}
}
// Called with an array:
printIterable(["a", "b", "c"]);
// Called with an object:
$iterator = new ArrayIterator(["d", "e", "f"]);
printIterable($iterator);
?>
O‘zingiz sinab ko‘ring »
Misol
Iterable qaytariladigan tip:
<?php
function getIterable():iterable {
return ["a", "b", "c"];
}
foreach(getIterable() as $item) {
echo $item;
}
?>
O‘zingiz sinab ko‘ring »
PHP - iterable’lar yaratish
Massivlar
Barcha massivlar iterable hisoblanadi, shuning uchun har qanday massiv iterable talab qiladigan funksiyaning argumenti sifatida ishlatilishi mumkin.
Iteratorlar
Iterator interfeysini amalga oshiradigan har qanday obyekt iterable talab qiladigan funksiyaning argumenti sifatida ishlatilishi mumkin.
Iterator elementlar ro‘yxatini o‘z ichiga oladi va ular bo‘ylab sikl bilan o‘tish uchun metodlarni taqdim etadi. U ro‘yxatdagi elementlardan biriga ko‘rsatkichni (pointer) saqlaydi. Ro‘yxatdagi har bir element elementni topish uchun ishlatilishi mumkin bo‘lgan kalitga ega bo‘lishi kerak.
Iterator quyidagi metodlarga ega bo‘lishi kerak:
current()- ko‘rsatkich hozir ko‘rsatayotgan elementni qaytaradi. U har qanday ma’lumot tipida bo‘lishi mumkinkey()Ro‘yxatdagi joriy element bilan bog‘langan kalitni qaytaradi. U faqat integer, float, boolean yoki string bo‘lishi mumkinnext()Ko‘rsatkichni ro‘yxatdagi keyingi elementga o‘tkazadirewind()Ko‘rsatkichni ro‘yxatdagi birinchi elementga o‘tkazadivalid()Agar ichki ko‘rsatkich hech qanday elementga ishora qilmasa (masalan, next() ro‘yxat oxirida chaqirilgan bo‘lsa), u false qaytarishi kerak. Boshqa har qanday holatda true qaytaradi
Misol
Iterator interfeysini amalga oshiring va undan iterable sifatida foydalaning:
<?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);
?>
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
