Optimización de la conversión a array en PHP
No siempre es necesario dividir una cadena en un array para hacer algo con ella.
Veamos un ejemplo.
En el siguiente ejemplo, el autor del código verifica
si hay un dígito 3 en la cadena:
<?php
$str = '12345';
$arr = explode('', $str); // dividimos en un array
if (in_array(3, $arr)) {
echo 'hay';
} else {
echo 'no hay';
}
?>
El autor hace un buen trabajo - utiliza funciones integradas de PHP, en lugar de escribir sus propias soluciones improvisadas.
Pero el código aún no es óptimo: aquí no hay
necesidad de dividir la cadena en un array, ya que existe
una función integrada strpos que realiza
la búsqueda en una cadena:
<?php
$str = '12345';
if (strpos($str, 3) !== false) {
echo 'hay';
} else {
echo 'no hay';
}
?>
¿Por qué es malo dividir en un array aquí? Porque, en primer lugar, la división en un array consume recursos del procesador, y en segundo lugar, el array resultante ocupará espacio en la memoria RAM (además, será más grande que el espacio ocupado por la propia cadena).
Moraleja: no dividas una cadena en un array si existe una manera de evitarlo.
En el siguiente código, un programador invierte los caracteres de una cadena. Optimiza la solución de este programador:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // mostrará '543321'
?>
En el siguiente código, alguien busca la cantidad de palabras en un texto. Optimiza la solución de este programador:
<?php
$str = 'aaa bbb ccc'; // una cadena larga cualquiera
echo count(explode(' ', $str));
?>