Аптымізацыя пераўтварэння ў масіў у 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 '---';
  }
?>

Чаму тут разбіваць у масіў дрэнна? Таму што, па-першае, на разбіццё ў масіў трацяцца рэсурсы працэсара, па-другое, атрыманы масіў будзе займаць месца ў аператыўнай памяці (прычым яно будзе больш, чым месца, якое займае сам радок).

Маral: не разбівайце радок у масіў, калі ёсць спосаб не рабіць гэтага.

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