Optimizacija pretvorbe v matriko v PHP

Ni vedno potrebno razbiti niz v matriko, da bi nekaj naredili z njim.

Poglejmo si primer. V naslednjem primeru avtor kode preverja, ali v nizu obstaja številka 3:

php<?php
  $str = '12345';
  $arr = explode('', $str); // razbijemo v matriko
  
  if (in_array(3, $arr)) {
    echo 'obstaja';
  } else {
    echo 'ne';
  }
?>

Avtor je odličen - uporablja vgrajene funkcije PHP, namesto da bi pisal svoje rešitve.

Vendar koda še vedno ni optimalna: tukaj ni potrebe po razbijanju niza v matriko, saj obstaja vnaprej pripravljena funkcija strpos, ki izvaja iskanje po nizu:

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

Zakaj je razbijanje v matriko tukaj slabo? Ker se, prvič, za razbijanje v matriko porabijo viri procesorja, drugič, bo nastala matrika zasedala prostor v operativnem spominu (in to več prostora, kot ga zaseda sam niz).

Naulek: ne razbijajte niza v matriko, če obstaja način, da tega ne storite.

Задание 1

V naslednji kodi neki programer obrne simbole niza v vrstnem redu. Optimizirajte rešitev tega programerja:

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

V naslednji kodi neki programer išče število besed v besedilu. Optimizirajte rešitev tega programerja:

php<?php
  $str = 'aaa bbb ccc'; // nek dolg niz
  echo count(explode(' ', $str));
?>