Optimizarea conversiei în array în PHP

Nu întotdeauna este necesar să despărțim un șir de caractere într-un array pentru a face ceva cu el.

Să ne uităm la un exemplu. În următorul exemplu, autorul codului verifică dacă în șir de caractere se află cifra 3:

php<?php
  $str = '12345';
  $arr = explode('', $str); // vom despărți în array
  
  if (in_array(3, $arr)) {
    echo 'există';
  } else {
    echo 'nu există';
  }
?>

Autorul este foarte bun - utilizează funcții încorporate PHP, în loc să scrie propriile soluții improvizate.

Dar codul totuși nu este optim: aici nu este nevoie să despărțim șirul de caractere într-un array, deoarece există funcția gata făcută strpos, care efectuează căutarea într-un șir de caractere:

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

De ce este rău să despărțim în array aici? Deoarece, în primul rând, despărțirea în array consumă resurse de procesor, iar în al doilea rând, array-ul rezultat va ocupa spațiu în memoria operativă (și acesta va fi mai mult decât spațiul ocupat de șirul de caractere însuși).

Morala: nu despărțiți șirul de caractere în array, dacă există o metodă de a evita acest lucru.

Задание 1

În următorul cod, un programator oarecare inversează caracterele șirului în ordine inversă. Optimizați soluția acestui programator:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // va afișa '54321'
?>
Задание 2

În următorul cod, un programator oarecare caută numărul de cuvinte într-un text. Optimizați soluția acestui programator:

php<?php
  $str = 'aaa bbb ccc'; // un șir de caractere lung oarecare
  echo count(explode(' ', $str));
?>