⊗ppSpOtEI 76 of 83 menu

Tsükli liigsete iteratsioonide optimeerimine PHP-s

Järgmises koodis kontrollib üks programmeerija, kas massiivis on number 3:

<?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); ?>

Mis on selle lahendusega valesti? Näib, et tsüklis ei tehta üleliigseid operatsioone. Probleem on aga selles, et pärast seda, kui on kindlaks tehtud, et number 3 on massiivis - tsükkel ikkagi jätkab kuni massiivi lõpuni.

Kõige ebaratsionaalsem on see, kui number 3 leitakse kuskil massiivi alguses, aga massiiv ise on pikk, näiteks 1000 elementi. Sel juhul tehakse tuhat kasutut iteratsiooni tsüklis! Mitte optimaalne.

Optimeerime koodi, peatades tsükli õigel ajal:

<?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); ?>

Järgmine kood loeb kokku, mitu massiivi elementi tuleb liita, et summa muutuks suuremaks kui 10. Tehke optimeerimine:

<?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; ?>

Järgmine kood väljastab paarisarvud antud vahemikust. Tehke optimeerimine:

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

Järgmine kood väljastab arvud, mis jaguvad samaaegselt nii 2-ga kui ka 3-ga. Tehke optimeerimine:

<?php for ($i = 0; $i <= 100; $i++) { if ($i % 2 === 0 and $i % 3 === 0) { echo $i; } } ?>
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu