PHPде массивга айландырууну оптималдаштыруу

Айрым учурларда сапты бир нерсе кылуу үчүн массивге бөлүү керек болбойт.

Келгиле, мисалды карап көрөлү. Төмөнкү мисалда коддун автору сапта 3 саны бар-жогун текшерип жатат:

php<?php
  $str = '12345';
  $arr = explode('', $str); // массивге бөлөлү
  
  if (in_array(3, $arr)) {
    echo 'бар';
  } else {
    echo 'жок';
  }
?>

Автор жакшы иштеп жатат - өзүнүн "костыльдерин" жазуунун ордуна PHPдин ички функцияларын колдонот.

Бирок код дагы оптималдуу эмес: бул жерде сапты массивге бөлүүнүн кажети жок, анткени саптын ичинде издөөнү аткарган strpos деген даяр функция бар:

php<?php
  $str = '12345';
  
  if (strpos(str, 3) !== false) {
    echo 'бар';
  } else {
    echo 'жок';
  }
?>

Бул жерде эмне үчүн массивге бөлүү начар? Анткени, биринчиден, массивге бөлүүгө процессордун ресурстары кетет, экинчиден, алынган массив оперативдик эс жадта (бөлөкчө, ал саптын өзү ээлеген орундан көбүрөөк) орун ээлейт.

Насыят: эгерде мумкун болсо, сапты массивге бөлбөгүлө.

Задание 1

Төмөнкү коддо бир программачы саптын символдорун тескери тартипте которуп жатат. Бул программачынын чечимин оптималдаштырыңыз:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // '54321' деп чыгарат
?>
Задание 2

Төмөнкү коддо бирөө тексттеги сөздөрдүн санын издейт. Бул программачынын чечимин оптималдаштырыңыз:

php<?php
  $str = 'aaa bbb ccc'; // бир узун сап
  echo count(explode(' ', $str));
?>