Iterables ann am PHP

SSL earbsach bho dìreach $3.44
sanasan
A ' dol airson PHP
Uair agus ceann-latha ann am PHP

Dè a th’ ann an Iterable ann am PHP?

Is e luach a th’ ann an ath-aithris a dh’ fhaodar ath-aithris thairis air. Tha e na dheagh roghainn airson cunntas a chumail air cia mheud uair a chaidh thu tro lùb. Mar eisimpleir, ma tha thu airson lùb fhàgail às deidh 10 tionndadh, faodaidh tu dìreach a dhèanamh le bhith a’ cleachdadh ath-aithris.

Mar a chleachdas tu Iterables ann am PHP

  • Is e ath-aithris luach sam bith ris an gabhar le a foreach lùb.
  • Thug PHP 7.1 a-steach an seòrsa dàta meallta seo agus faodar a chleachdadh mar an seòrsa gnìomh dàta tilleadh. Cuideachd, faodaidh an gnìomh gabhail ri iterables mar an argamaid aige.

Tha ierables a’ toirt seachad dòigh shìmplidh airson cunntas a chumail air a’ chunntadh ath-aithris fhad ‘s a thathar a’ dèiligeadh ri lùban, a dh’ fhaodadh a bhith feumail ann an cuid de shuidheachaidhean. Faodaidh e cuideachd a bhith air a chleachdadh mar sheòrsa tilleadh gnìomh, agus faodaidh an gnìomh nithean a ghabhas a chleachdadh mar argamaidean.

Mar a nì thu sgrùdadh a bheil nì a ghabhas ath-aithris

Gus faighinn a-mach a bheil nì na eisimpleir den eadar-aghaidh IteratorAggregate no Iterator, cleachd eisimpleir gnìomhaiche. Mar eisimpleir:

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

Mar a nì thu lùb thairis air nì a ghabhas ath-aithris

Faodaidh tu a 'cleachdadh an foreach lùb gus lùbadh thairis air nì a ghabhas ath-aithris. Mar eisimpleir:

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

A’ cruthachadh do chlas Iterable fhèin

Feumaidh tu cur an gnìomh an eadar-aghaidh IteratorAggregate agus sònraich an faighIterator gnìomh gus do chlas ath-aithriseach fhèin a thogail. Mar eisimpleir:

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

Q&A

C: Dè na diofar sheòrsaichean ath-aithris ann am PHP?
A: Arrays, Rudan a tha a’ cur an gnìomh an eadar-aghaidh Iterator, agus tha nithean a tha a’ cur an gnìomh an eadar-aghaidh Traversable uile nan eisimpleirean de iterables ann am PHP.

C: An urrainn dhut an diofar eadar Iterator agus Traversable eadar-aghaidh?
A: An Iterator eadar-aghaidh a’ tabhann cruinneachadh de dhòighean airson ath-aithris tro nì, leithid ath-fhilleadh, sruth, iuchair, ath, agus dligheach. Tha an eadar-aghaidh Traversable, air an làimh eile, dìreach ag ràdh gu bheil clas furasta a ghluasad agus nach eil feum air dòighean sònraichte sam bith a chuir an gnìomh. Feumaidh clasaichean a tha air an cur an gnìomh le Iterator cuideachd an eadar-aghaidh Traversable a chuir an gnìomh.

C: Dè an cleachdadh a th’ ann IteratorAggregate eadar-aghaidh?
A: Leigidh an eadar-aghaidh IteratorAggregate leat ath-aithris thairis air rud le bhith a’ stèidheachadh nì iterator bhon taobh a-muigh as urrainn faighinn thairis air susbaint an nì. Leigidh seo leis an nì a dhòigh tar-chuir fhèin a chruthachadh gun a bhith feumach air an eadar-aghaidh Iterator a chuir an gnìomh. Feumaidh clasaichean a chuireas an eadar-aghaidh seo an gnìomh aon dòigh a shònrachadh ris an canar getIterator, a thilleas eisimpleir de nì eadar-aghaidh Iterator.

SSL earbsach bho dìreach $3.44
sanasan

C: Dè an diofar eadar foreach agus for lùb nuair a bhios tu a’ cleachdadh iterators?
A: Tha an foreach lùb air a dhealbhadh gu sònraichte gus obrachadh le iterators, bidh e gu fèin-ghluasadach a’ gairm an rewind dòigh-obrach aig toiseach an lùb agus an valid dòigh gus faighinn a-mach a bheil barrachd eileamaidean ann airson ath-aithris.

The for Faodar lùb a chleachdadh cuideachd le iterators, ach feumaidh am prògramadair an rewind, valid, current, key, agus next dòighean-obrach aig na puingean iomchaidh san lùb.

C: Ciamar a chleachdas tu Iterator le Closure?
F: Faodar dùnadh a chleachdadh mar iterators ann am PHP. Gus seo a dhèanamh, cruthaich eisimpleir den chlas IteratorIterator agus thoir biadh dha do dhùnadh mar argamaid. Cha bu chòir don dhùnadh crìochan sam bith a ghabhail agus sreath a thilleadh anns a bheil an iuchair agus an luach làithreach. Gus am bi na caochladairean taobh a-muigh rim faighinn taobh a-staigh an dùnaidh, bu chòir aithris cleachdaidh a bhith anns an dùnadh a bharrachd.

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

An seo, IteratorIterator clas air a chleachdadh airson aithris thairis air an ArrayIterator clas a tha an uairsin a’ dol seachad air a’ ghnìomh dùnaidh.

Exercises:

  1. Dè a th 'ann an ath-aithris ann am PHP?
  2. Ciamar a nì thu aithris thairis air sreath a’ cleachdadh airson lùb ann am PHP?
  3. Ciamar a nì thu aithris thairis air sreath a’ cleachdadh lùb foreach ann am PHP?
  4. Ciamar a nì thu aithris air rud a’ cleachdadh lùb foreach ann am PHP?
  5. Ciamar a chruthaicheas tu iterator airson clas àbhaisteach ann am PHP?
  6. Ciamar a chleachdas tu an yield prìomh fhacal gus gnìomh gineadair a chruthachadh ann am PHP?

freagairtean:

  1. Is e rud a th’ ann an iterable a ghabhas ath-aithris (lùb) thairis air, leithid sreath no nì.
  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. Gus iterator a chruthachadh airson clas àbhaisteach, feumaidh an clas an Iterator eadar-aghaidh agus mìneachadh an rewind, valid, current, key, agus next modhan.
  6. function generator() { yield $value1; yield $value2; }
A ' dol airson PHP
Uair agus ceann-latha ann am PHP
dùin

Cùm suas ris an fhiosrachadh as ùire mu PHP!

Cha bhith sinn a’ spamadh!

SSL earbsach bho dìreach $3.44
sanasan

en English
X
Rach gu mhullaich