⊗ppSpOtEI 76 of 83 menu

Optimering af unødvendige loop-gennemløb i PHP

I følgende kode tjekker en programmør, om arrayet indeholder tallet 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); ?>

Hvad er der galt med hans løsning? Umiddelbart ser det ud til, at der ikke udføres nogen unødvendige operationer i loopet. Problemet er imidlertid, at efter det er blevet fastslået, at tallet 3 er i arrayet, fortsætter loopet stadig med at køre til slutningen af arrayet.

Det mest urationelle vil være, hvis tallet 3 bliver fundet et sted i starten af arrayet, mens selve arrayet har en længde på, for eksempel, 1000 elementer. Det vil resultere i tusind ubrugelige, unødvendige loop-iterationer! Ikke optimalt.

Lad os optimere koden ved at stoppe loopet til tiden:

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

Følgende kode beregner, hvor mange elementer af arrayet der skal lægges sammen, før summen bliver større end 10. Udfør optimering:

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

Følgende kode udskriver lige tal fra et givet interval. Udfør optimering:

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

Følgende kode udskriver tal, der er delelige med både 2 og 3. Udfør optimering:

<?php for ($i = 0; $i <= 100; $i++) { if ($i % 2 === 0 and $i % 3 === 0) { echo $i; } } ?>
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis