Optimisation de la conversion en tableau en PHP
Il n'est pas toujours nécessaire de diviser une chaîne en un tableau pour faire quelque chose avec.
Regardons un exemple.
Dans l'exemple suivant, l'auteur du code vérifie
s'il y a un chiffre 3 dans la chaîne :
<?php
$str = '12345';
$arr = explode('', $str); // divisons en un tableau
if (in_array(3, $arr)) {
echo 'existe';
} else {
echo 'n'existe pas';
}
?>
L'auteur a bien fait - il utilise les fonctions intégrées de PHP, au lieu d'écrire ses propres solutions bancales.
Mais le code n'est toujours pas optimal : il n'y a pas
besoin de diviser la chaîne en un tableau ici, car il existe
une fonction toute faite strpos, qui effectue
une recherche dans une chaîne :
<?php
$str = '12345';
if (strpos($str, '3') !== false) {
echo 'existe';
} else {
echo 'n'existe pas';
}
?>
Pourquoi est-il mauvais de diviser en un tableau ici ? Parce que, premièrement, la division en un tableau consomme des ressources processeur, deuxièmement, le tableau obtenu occupera de la place dans la mémoire vive (et celle-ci sera plus importante que la place occupée par la chaîne elle-même).
Morale : ne divisez pas une chaîne en tableau, s'il existe un moyen de ne pas le faire.
Dans le code suivant, un certain programmeur inverse les caractères d'une chaîne dans l'ordre inverse. Optimisez la solution de ce programmeur :
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // affichera '543321'
?>
Dans le code suivant, quelqu'un cherche le nombre de mots dans un texte. Optimisez la solution de ce programmeur :
<?php
$str = 'aaa bbb ccc'; // une certaine longue chaîne
echo count(explode(' ', $str));
?>