Iterables yn PHP

SSL dibynadwy o ddim ond $3.44
hysbysebion
Chwilio am PHP
Amser a dyddiad yn PHP

Beth yw Iterable yn PHP?

Mae iteradwy yn werth y gellir ei ailadrodd drosodd. Mae'n opsiwn ardderchog ar gyfer cadw golwg ar sawl gwaith rydych chi wedi mynd trwy ddolen. Er enghraifft, os ydych am adael dolen ar ôl 10 iteriad, gallwch ei wneud gan ddefnyddio ailadroddadwy.

Sut i ddefnyddio Iterables yn PHP

  • Iteradwy yw unrhyw werth a dderbynnir gan a foreach dolen.
  • Cyflwynodd PHP 7.1 y math ffug-ddata hwn a gellir ei ddefnyddio fel y math o swyddogaethau data dychwelyd. Hefyd, gall y swyddogaeth dderbyn pethau iteradwy fel ei ddadl.

Mae iterables yn rhoi dull syml o gadw golwg ar y cyfrif iteriad wrth ddelio â dolenni, a allai fod yn ddefnyddiol mewn rhai senarios. Gellir ei ddefnyddio hefyd fel math dychwelyd ffwythiant, a gall y swyddogaeth gymryd pethau ailadroddadwy fel dadleuon.

Sut i wirio a yw gwrthrych yn ailadroddadwy

I benderfynu a yw gwrthrych yn enghraifft o'r rhyngwynebau IteratorAggregate neu'r Iterator, defnyddiwch enghraifft gweithredwr. Fel enghraifft:

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

Sut i Dolen Dros Wrthrych Amradwy

Gallwch ddefnyddio'r foreach dolen i ddolennu dros wrthrych ailadroddadwy. Er enghraifft:

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

Creu eich dosbarth Iterable eich hun

Rhaid i chi gweithredu y rhyngwyneb IteratorAggregate a nodi'r getIterator swyddogaeth i adeiladu eich dosbarth ailadroddadwy eich hun. Fel enghraifft:

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

Holi ac Ateb

C: Beth yw'r gwahanol fathau o bethau iteradwy yn PHP?
A: Araeau, gwrthrychau sy'n gweithredu'r rhyngwyneb Iterator, a gwrthrychau sy'n gweithredu'r rhyngwyneb Traversable i gyd yn enghreifftiau o iterables yn PHP.

C: Allwch chi egluro'r gwahaniaeth rhwng Iterator ac Traversable rhyngwynebau?
A: Yr Iterator rhyngwyneb yn cynnig casgliad o ddulliau ar gyfer ailadrodd trwy wrthrych, megis ailddirwyn, cerrynt, allwedd, nesaf, a dilys. Mae'r rhyngwyneb Traversable, ar y llaw arall, yn dweud yn unig bod modd croesi dosbarth ac nad oes angen unrhyw ddulliau penodol i'w gweithredu. Rhaid i ddosbarthiadau a weithredir gan iterator hefyd weithredu'r rhyngwyneb Traversable.

C: Beth yw'r defnydd o IteratorAggregate rhyngwyneb?
A: Mae'r rhyngwyneb IteratorAggregate yn caniatáu ichi ailadrodd dros wrthrych trwy sefydlu gwrthrych iterator allanol a all groesi cynnwys yr eitem. Mae hyn yn galluogi'r gwrthrych i greu ei ddull croesi ei hun heb fod angen gweithredu'r rhyngwyneb Iterator. Rhaid i ddosbarthiadau sy'n gweithredu'r rhyngwyneb hwn nodi un dull o'r enw getIterator, sy'n dychwelyd enghraifft o wrthrych rhyngwyneb Iterator.

SSL dibynadwy o ddim ond $3.44
hysbysebion

C: Beth yw'r gwahaniaeth rhwng foreach ac for dolen wrth ddefnyddio iterators?
A: Mae'r foreach dolen wedi'i gynllunio'n benodol i weithio gyda iterators, mae'n awtomatig yn galw y rewind dull ar ddechrau'r ddolen a'r valid dull i wirio a oes mwy o elfennau i'w hailadrodd.

The for gellir defnyddio dolen hefyd gydag iterators, ond mae angen i'r rhaglennydd ffonio'r rewind, valid, current, key, a next dulliau ar y pwyntiau priodol yn y ddolen.

C: Sut i ddefnyddio Iterator gyda Chau?
A: Gellir defnyddio cau fel iterwyr yn PHP. I wneud hyn, crëwch enghraifft o'r dosbarth IteratorIterator a'i fwydo fel dadl. Ni ddylai'r cau gymryd unrhyw baramedrau a dychwelyd arae sy'n cynnwys yr allwedd a'r gwerth cyfredol. Er mwyn sicrhau bod y newidynnau allanol ar gael y tu mewn i'r cau, dylai'r cau gynnwys datganiad defnydd hefyd.

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

Yma, IteratorIterator dosbarth yn cael ei ddefnyddio i ailadrodd dros y ArrayIterator dosbarth sydd wedyn yn cael ei basio y swyddogaeth cau.

Ymarferion:

  1. Beth yw elfennau iterable yn PHP?
  2. Sut ydych chi'n ailadrodd dros arae gan ddefnyddio dolen ar gyfer PHP?
  3. Sut ydych chi'n ailadrodd dros arae gan ddefnyddio dolen foreach yn PHP?
  4. Sut ydych chi'n ailadrodd dros wrthrych gan ddefnyddio dolen foreach yn PHP?
  5. Sut ydych chi'n creu iterator ar gyfer dosbarth arferol yn PHP?
  6. Sut ydych chi'n defnyddio'r yield allweddair i greu swyddogaeth generadur yn PHP?

Atebion:

  1. Mae ailadroddadwy yn wrthrych y gellir ei ailadrodd (dolen) drosodd, fel arae neu wrthrych.
  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. I greu iterator ar gyfer dosbarth arferiad, rhaid i'r dosbarth weithredu'r Iterator rhyngwyneb a diffinio'r rewind, valid, current, key, a next dulliau.
  6. function generator() { yield $value1; yield $value2; }
Chwilio am PHP
Amser a dyddiad yn PHP
cau

Cadwch y wybodaeth ddiweddaraf am PHP!

Nid ydym yn sbam!

SSL dibynadwy o ddim ond $3.44
hysbysebion

en English
X
Sgroliwch i'r brig