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
$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
$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.
No código a seguir, um programador inverte os caracteres de uma string na ordem inversa. Otimize a solução desse programador:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // exibirá '543321'
?>
No código a seguir, alguém busca a quantidade de palavras em um texto. Otimize a solução desse programador:
<?php
$str = 'aaa bbb ccc'; // uma string longa qualquer
echo count(explode(' ', $str));
?>