PHP-ում ներդրված ֆունկցիաների միջոցով օպտիմիզացիա

Ենթադրենք, որ ինչ-որ ծրագրավորող ստուգում է՝ արդյոք զանգվածում կա 5 թիվը.

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  $exists = false;
  foreach ($arr as $elem) {
    if ($elem == 5) {
      $exists = true;
      break; // դուրս կգանք ցիկլից, որպեսզի ավելորդ անգամ չպտտվի
    }
  }
  
  var_dump($exists);
?>

Ես պնդում եմ, որ այս կոդի հետ ինչ-որ բան սխալ է. Ի՞նչն է սխալ, մենք դուրս չե՞նք գալիս ցիկլից այն բանից հետո, երբ գտանք 3 թիվը: Բանն այն է, որ PHP-ի ներդրված ֆունկցիաները միշտ աշխատում են մի կարգով ավելի արագ, քան նմանատիպ ինքնագրված կոդը:

Մեր դեպքում գոյություն ունի in_array ֆունկցիան, որը լուծում է դրված խնդիրը, և օգտագործել պետք է հենց այդ ֆունկցիան.

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  var_dump(in_array(3, $arr));
?>

Բարոյականություն. առաջադրանքը լուծելուց առաջ անպայման ստուգեք՝ արդյոք դրա լուծման համար կա PHP-ի ներդրված ֆունկցիա:

Задание 1

Հաջորդ կոդում ինչ-որ ծրագրավորող գտնում է զանգվածի տարրերի գումարը: Դուք պետք է օպտիմիզացնեք այս ծրագրավորողի լուծումը:

Ահա կոդը.

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  $sum = 0;
  foreach ($arr as $elem) {
    $sum += $elem;
  }
  echo $sum;
?>
Задание 2

Հաջորդ կոդում ինչ-որ ծրագրավորող գտնում է զանգվածի տարրերի արտադրյալը: Դուք պետք է օպտիմիզացնեք այս ծրագրավորողի լուծումը.

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  $res = 1;
  foreach ($arr as $elem) {
    $res *= $elem;
  }
  echo $res;
?>