Iterables di PHP de

Ji bo PHP-ê digerin
Dem û tarîx di PHP de

Iterable di PHP de çi ye?

Iterable nirxek e ku dikare li ser were dubare kirin. Ew vebijarkek hêja ye ku hûn bişopînin ka hûn çend caran di nav lûkê re derbas bûne. Mînakî, heke hûn dixwazin piştî 10 dubareyan ji lûleyekê derbikevin, hûn dikarin wê bi tenê bi karanîna dubareyek bikin.

Meriv çawa Iterables di PHP-ê de bikar tîne

  • Iterable her nirxek e ku ji hêla a ve tête pejirandin Ji bo her yekî loop
  • PHP 7.1 ev celebê pseudo-daneyê destnîşan kir û ew dikare wekî celebê daneya vegerê ya fonksiyonan were bikar anîn. Di heman demê de, fonksiyon dikare dubareyan wekî argumana xwe qebûl bike.

Iterables rêbazek hêsan dide ku dema ku bi lûpan re mijûl dibin, jimara dubarekirinê bişopîne, ku dibe ku di hin senaryoyan de kêrhatî be. Di heman demê de dibe ku ew wekî celebek vegerê ya fonksiyonê jî were bikar anîn, û fonksiyon dikare wekî argumanan dubareyan bigire.

Meriv çawa kontrol dike ka tiştek dubare ye

Ji bo ku hûn diyar bikin ka tiştek nimûneyek ji navberên IteratorAggregate an Iterator e, operatora nimûneyê bikar bînin. Wek nimûne:

$obj = new MyClass();
if ($obj instanceof IteratorAggregate || $obj instanceof Iterator) {
  // object is iterable
}

Meriv çawa li ser Tiştek Iterable Loop dike

Hûn dikarin bi kar bînin foreach çerxkirin li ser tiştekî îterable. Bo nimûne:

$iterable = new MyIterableClass();
foreach ($iterable as $value) {
  // do something with $value
}

Afirandina çîna xweya Iterable

divê tu bi bicîanîn pêwendiya IteratorAggregate û diyar bike getIterator fonksiyona avakirina çîna xweya dubare. Wek nimûne:

class MyIterableClass implements IteratorAggregate {
  private $data = array();
  
  public function __construct($data) {
    $this->data = $data;
  }
  
  public function getIterator() {
    return new ArrayIterator($this->data);
  }
}

Q & A

Pirs: Di PHP-ê de celebên cûda yên dubare çi ne?
A: Array, objects ku navbeynkariya Iterator bicîh dikin, û tiştên ku navbeynkariya Traversable pêk tînin, hemî mînakên dubareyên PHP-ê ne.

Pirs: Hûn dikarin ferqa di navbera rave bikin Iterator û Traversable pêwendiyan?
A: Iterator virtual berhevokek rêbazan ji bo dubarekirina bi hêmanek, wek paşvekêşîn, niha, kilît, paşeroj, û derbasdar pêşkêşî dike. Ji hêla din ve, navbeynkariya Traversable tenê dibêje ku çînek veguhezbar e û ji bo bicîhanîna rêbazên taybetî hewce nake. Divê dersên ku ji hêla Iterator ve têne bicîh kirin jî pêwendiya Traversable bicîh bikin.

Pirs: Bikaranîna çi ye IteratorAggregate interface?
A: Navbera IteratorAggregate destûrê dide te ku hûn li ser tiştekê dubare bikin bi sazkirina tiştek îteratorek derveyî ku dikare naveroka babetê bişopîne. Ev dihêle ku tişt bêyî ku hewce bike ku pêwendiya Iterator bicîh bike rêbaza xweya gerokê biafirîne. Çînên ku vê navberê bicîh dikin divê rêbazek yekane ya bi navê getIterator diyar bikin, ku mînakek objeya navberê ya Iterator vedigerîne.

Pirs: Ferqa di navbera çi ye foreach û for dema bikaranîna iterators?
A: foreach loop bi taybetî hatî çêkirin ku bi îteratoran re bixebite, ew bixweber gazî dike rewind rêbaza di destpêkê de ji loop û valid rêbaza ku kontrol bikin ka bêtir hêman hene ku werin dubare kirin.

The for loop dikare bi îteratoran re jî were bikar anîn, lê pêdivî ye ku bernamenûs bi destan gazî bike rewind, valid, current, key, û next rêbazên li nuqteyên guncav di hêlînê de.

Pirs: Meriv çawa Iterator bi Girtinê re bikar tîne?
A: Girtin dikarin di PHP de wekî dubareker werin bikar anîn. Ji bo kirina vê yekê, mînakek çîna IteratorIterator biafirînin û girtina xwe wekî arguman bişopînin. Pêdivî ye ku girtina pîvanan negire û rêzek ku tê de mifteya heyî û nirxa heyî vedigire vegerîne. Ji bo ku guhêrbarên derveyî di hundurê girtinê de peyda bibin, divê girtî jî daxuyaniyek bikar bîne.

$myArray = [1, 2, 3, 4];
$iter = new IteratorIterator(new ArrayIterator($myArray));
foreach ($iter as $key => $val) {
    echo $val . PHP_EOL;
}

Vir, IteratorIterator çîn ji bo dubarekirina li ser tê bikaranîn ArrayIterator pola ku paşê fonksiyona girtinê derbas dibe.

temrîn:

  1. Di PHP-ê de iterables çi ne?
  2. Meriv çawa di PHP-ê de bi karanîna loopek for-ê li ser rêzek dubare dike?
  3. Meriv çawa di PHP-ê de bi karanîna pêleka foreach-ê li ser rêzek dubare dike?
  4. Meriv çawa di PHP-ê de bi karanîna pêleka foreach-ê li ser tiştekê dubare dike?
  5. Meriv çawa ji bo çînek xwerû di PHP-ê de îteratorek diafirîne?
  6. Hûn çawa bikar tînin yield peyva sereke ku di PHP-ê de fonksiyonek jeneratorê biafirîne?

Answers:

  1. Iterable ew tişt e ku dikare li ser were dubare kirin (teqandin), wek rêzek an tiştek.
  2. for ($i = 0; $i < count($array); $i++) { // code to be executed; }
  3. foreach ($array as $value) { // code to be executed; }
  4. foreach ($object as $property => $value) { // code to be executed; }
  5. Ji bo afirandina îteratorek ji bo çînek xwerû, pêdivî ye ku çîn pêk bîne Iterator navbeynkar û pênase bike rewind, valid, current, key, û next rêbazan
  6. function generator() { yield $value1; yield $value2; }
Ji bo PHP-ê digerin
Dem û tarîx di PHP de
nêzîkî

Di derbarê PHP-ê de rojane bimînin!

Em spam nakin!

en English
X
Scroll to Top