Optimizacija konverzije u niz u PHP-u

Nije uvek neophodno razbiti string u niz da biste nešto sa njim uradili.

Pogledajmo na primeru. U sledećem primeru autor koda proverava, da li se u stringu nalazi cifra 3:

php<?php
  $str = '12345';
  $arr = explode('', $str); // podelimo u niz
  
  if (in_array(3, $arr)) {
    echo 'ima';
  } else {
    echo 'nema';
  }
?>

Autor je odličan - koristi ugradene funkcije PHP-a, umesto da piše svoje improvizovane rešenje.

Ali kod i dalje nije optimalan: ovde nema potrebe da se string razbija u niz, jer postoji gotova funkcija strpos, koja vrši pretragu po stringu:

php<?php
  $str = '12345';
  
  if (strpos(str, 3) !== false) {
    echo 'ima';
  } else {
    echo 'nema';
  }
?>

Zašto je ovde rabijanje u niz loše? Zato što se, prvo, na rabijanje u niz troše resursi procesora, drugo, dobijeni niz će zauzimati mesto u operativnoj memoriji (i to će biti više mesta nego što ga zauzima sam string).

Morala: ne razbijajte string u niz, ako postoji način da to ne uradite.

Задание 1

U sledećem kodu neki programer okreće karaktere stringa u obrnutom redosledu. Optimizujte rešenje ovog programera:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // ispisaće '54321'
?>
Задание 2

U sledećem kodu neko traži broj reči u tekstu. Optimizujte rešenje ovog programera:

php<?php
  $str = 'aaa bbb ccc'; // neki dugačak string
  echo count(explode(' ', $str));
?>