Ottimizzazione della conversione in array in PHP
Non è sempre necessario suddividere una stringa in un array per fare qualcosa con essa.
Diamo un'occhiata a un esempio.
Nel seguente esempio, l'autore del codice verifica
se nella stringa è presente la cifra 3:
<?php
$str = '12345';
$arr = explode('', $str); // suddividiamo in un array
if (in_array(3, $arr)) {
echo 'c'è';
} else {
echo 'non c'è';
}
?>
L'autore è bravo - utilizza le funzioni integrate di PHP, invece di scrivere soluzioni approssimative.
Ma il codice non è comunque ottimale: qui non c'è
bisogno di suddividere la stringa in un array, poiché esiste
la funzione già pronta strpos, che esegue
la ricerca all'interno della stringa:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'c'è';
} else {
echo 'non c'è';
}
?>
Perché suddividere in un array è negativo qui? Perché, in primo luogo, la suddivisione in un array consuma risorse della CPU, in secondo luogo, l'array risultante occuperà spazio nella memoria RAM (e sarà uno spazio maggiore di quello occupato dalla stringa stessa).
Morale: non suddividete una stringa in un array se esiste un modo per evitarlo.
Nel codice seguente, un programmatore inverte i caratteri di una stringa in ordine inverso. Ottimizzate la soluzione di questo programmatore:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // visualizzerà '54321'
?>
Nel codice seguente, qualcuno cerca il numero di parole in un testo. Ottimizzate la soluzione di questo programmatore:
<?php
$str = 'aaa bbb ccc'; // una lunga stringa qualsiasi
echo count(explode(' ', $str));
?>