⊗ppSpOtEI 76 of 83 menu

Optimering av onödiga loopgenomgångar i PHP

I följande kod kontrollerar en programmerare om talet 3 finns i arrayen:

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

Vad är fel med hans lösning? Det verkar som att inga onödiga operationer görs i loopen. Problemet, ändå, är att efter det har fastställts att talet 3 finns i arrayen - så fortsätter loopen att snurra till slutet av arrayen.

Mest orationellt blir det om talet 3 hittas någonstans i början av arrayen, medan själva arrayen har en längd på, låt oss säga, 1000 element. Då blir det tusen meningslösa onödiga iterationer av loopen! Inte optimalt.

Låt oss optimera koden genom att stoppa loopen i tid:

<?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öljande kod räknar ut hur många element i arrayen som behöver läggas ihop för att summan ska bli större än 10. Utfö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öljande kod skriver ut jämna tal från ett givet intervall. Utför optimering:

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

Följande kod skriver ut tal som är delbara med både 2 och 3. Utför optimering:

<?php for ($i = 0; $i <= 100; $i++) { if ($i % 2 === 0 and $i % 3 === 0) { echo $i; } } ?>
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa