PHP да циклинг ортиқча ўтишларини оптималлаштириш

Куйидаги кодда бир программачи массивда 3 сони бормиканлигини текширмокда:

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

Унинг ечимида нима ноугъа? Андой эмас, циклда ҳеч қандай ортиқча амаллар бажарилмайди. Аммо, муаммо шундаки, 3 сони массивда борлиги аниқланганидан сўнг ҳам - цикл массив охиригача айланишни давом эттиради.

Энг ноўринли 3 сони массивнинг бош қисмида топиладиган ва массивнинг ўзи узунлиги 1000 та элементдан иборат бўлганда рўй беради. Натижада мингта фойдасиз ортиқча цикл такрорланиши келиб чиқади! Оптимал эмас.

Кодни опималлаштирамиз, циклни ўз вақтида тўхтатиб:

php<?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);
?>
Задание 1

Куйидаги код массивнинг қанчата элементини қўшиш кераклигини ҳисоблайди, йиғинди 10 дан ошгунча. Оптималлаштиришни бажаринг:

php<?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;
?>
Задание 2

Куйидаги код берилган оралиқдан жуфт сонларни чиқаради. Оптималлаштиришни бажаринг:

php<?php
  for ($i = 0; $i <= 100; $i++) {
    if ($i % 2 === 0) {
      echo $i;
    }
  }
?>
Задание 3

Куйидаги код бир вақтнинг ўзида 2 ва 3 га бўлинадиган сонларни чиқаради. Оптималлаштиришни бажаринг:

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