⊗ppSpOtEI 76 of 83 menu

Optimizarea trecerilor inutile ale buclei în PHP

În următorul cod, un programator verifică dacă numărul 3 există în array:

<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; $exists = false; foreach ($arr as $elem) { if ($elem == 3) { $exists = true; } } var_dump($exists); ?>

Ce este în neregulă cu soluția sa? Se pare că nu se fac operații inutile în buclă. Problema, însă, este că după ce s-a stabilit că numărul 3 există în array - bucla continuă să se învârtă până la sfârșitul array-ului.

Cel mai irațional va fi dacă numărul 3 va fi găsit undeva la începutul array-ului, iar array-ul însuși va avea lungimea, să zicem, 1000 de elemente. Se vor face o mie de iterații inutile ale buclei! Nu este optim.

Să optimizăm codul, oprind bucla la timp:

<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; $exists = false; foreach ($arr as $elem) { if ($elem == 3) { $exists = true; break; } } var_dump($exists); ?>

Următorul cod calculează câte elemente din array trebuie adunate, pentru ca suma să devină mai mare decât 10. Efectuați optimizarea:

<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; $sum = 0; $i = 1; foreach ($arr as $elem) { $sum += $elem; if ($sum <= 10) { $i++; } } echo $i; ?>

Următorul cod afișează numerele pare din intervalul dat. Efectuați optimizarea:

<?php for ($i = 0; $i <= 100; $i++) { if ($i % 2 === 0) { echo $i; } } ?>

Următorul cod afișează numerele divizibile simultan cu 2 și cu 3. Efectuați optimizarea:

<?php for ($i = 0; $i <= 100; $i++) { if ($i % 2 === 0 and $i % 3 === 0) { echo $i; } } ?>
Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge