Оптимизација претварања у низ у PHP

Није увек потребно разбијати стринг у низ да би се нешто урадило са њим.

Хајде да погледамо пример. У следећем примеру аутор кода проверава, да ли у стрингу постоји цифра 3:

php<?php
  $str = '12345';
  $arr = explode('', $str); // разбијамо у низ
  
  if (in_array(3, $arr)) {
    echo 'постоји';
  } else {
    echo 'не постоји';
  }
?>

Аутор је одличан - користи уграђене функције PHP, уместо да пише своје импровизоване решења.

Али код ипак није оптималан: овде нема потребе да се стринг разбија у низ, јер постоји готовa функцијa strpos, која врши претрагу по стрингу:

php<?php
  $str = '12345';
  
  if (strpos($str, '3') !== false) {
    echo 'постоји';
  } else {
    echo 'не постоји';
  }
?>

Зашто је разбијање у низ овде лоше? Зато што се, прво, на разбијање у низ троше ресурси процесора, друго, добијени низ ће заузимати простор у оперативној меморији (притом тај простор ће бити већи него простор који заузима сам стринг).

Поука: не разбијајте стринг у низ, ако постоји начин да то не урадите.

Задание 1

У следећем коду неки програмер окреће симболе стринга у обрнутом редоследу. Оптимизујте решење овог програмера:

php<?php
  $str = '12345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // исписаће '54321'
?>
Задание 2

У следећем коду неки тражи број речи у тексту. Оптимизујте решење овог програмера:

php<?php
  $str = 'aaa bbb ccc'; // неки дугачак стринг
  echo count(explode(' ', $str));
?>