Otimização da conversão para array em PHP

Nem sempre é necessário dividir uma string em um array para fazer algo com ela.

Vejamos um exemplo. No exemplo a seguir, o autor do código verifica se há o dígito 3 na string:

php<?php
  $str = '12345';
  $arr = explode('', $str); // divide em um array
  
  if (in_array(3, $arr)) {
    echo 'existe';
  } else {
    echo 'não existe';
  }
?>

O autor está de parabéns - usa funções internas do PHP, em vez de escrever suas próprias soluções improvisadas.

Mas o código ainda não é ideal: não há necessidade de dividir a string em um array, pois existe uma função pronta strpos que executa a busca na string:

php<?php
  $str = '12345';
  
  if (strpos($str, '3') !== false) {
    echo 'existe';
  } else {
    echo 'não existe';
  }
?>

Por que dividir em um array é ruim aqui? Porque, primeiro, a divisão em um array consome recursos do processador, e segundo, o array resultante ocupará espaço na memória RAM (e, aliás, será mais espaço do que aquele ocupado pela própria string).

Moral: não divida a string em um array se houver uma maneira de evitar isso.

Задание 1

No código a seguir, um programador inverte os caracteres de uma string na ordem inversa. Otimize a solução desse programador:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // exibirá '543321'
?>
Задание 2

No código a seguir, alguém busca a quantidade de palavras em um texto. Otimize a solução desse programador:

php<?php
  $str = 'aaa bbb ccc'; // uma string longa qualquer
  echo count(explode(' ', $str));
?>