Tömbvé konvertálás optimalizálása PHP-ban

Nem mindig szükséges egy sztringet tömbre bontani, hogy valamit tegyünk vele.

Nézzünk egy példát. A következő példában a kód szerzője azt ellenőrzi, hogy van-e a sztringben a 3 számjegy:

php<?php
  $str = '12345';
  $arr = explode('', $str); // bontsuk tömbre
  
  if (in_array(3, $arr)) {
    echo 'van';
  } else {
    echo 'nincs';
  }
?>

A szerző jó munkát végzett - a PHP beépített függvényeit használja, ahelyett, hogy saját megoldást írna.

De a kód így sem optimális: itt nincs szükség a sztring tömbbé alakítására, hiszen létezik a kész strpos függvény, amely keresést végez a sztringen belül:

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

Miért rossz itt tömbbé bontani? Mert először is, a tömbbé alakítás processzor erőforrást emészt fel, másodszor pedig a kapott tömb helyet foglal a operatív memóriában (ráadásul ez a hely több lesz, mint amennyit maga a sztring foglal).

Tanulság: ne bontsatok sztringet tömbre, ha van módotok arra, hogy ne tegyétek.

Задание 1

A következő kódban egy programozó megfordítja a sztring karaktereit. Optimalizáljátok ennek a programozónak a megoldását:

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

A következő kódban valaki a szavak számát keresi egy szövegben. Optimalizáljátok ennek a programozónak a megoldását:

php<?php
  $str = 'aaa bbb ccc'; // valamilyen hosszú sztring
  echo count(explode(' ', $str));
?>