Existe-t-il une bonne manière d'itérer sur les caractères d'une chaîne? Je voudrais être en mesure de le faire foreach
, array_map
, array_walk
, array_filter
etc. sur les caractères d'une chaîne.
Le type casting / jonglage ne m'a amené nulle part (mettez la chaîne entière comme un élément du tableau), et la meilleure solution que j'ai trouvée consiste simplement à utiliser une boucle for pour construire le tableau. On a l'impression qu'il devrait y avoir quelque chose de mieux. Je veux dire, si vous pouvez l'indexer, ne devriez-vous pas être capable d'itérer également?
C'est le meilleur que j'ai
function stringToArray($s)
{
$r = array();
for($i=0; $i<strlen($s); $i++)
$r[$i] = $s[$i];
return $r;
}
$s1 = "textasstringwoohoo";
$arr = stringToArray($s1); //$arr now has character array
$ascval = array_map('ord', $arr); //so i can do stuff like this
$foreach ($arr as $curChar) {....}
$evenAsciiOnly = array_filter( function($x) {return ord($x) % 2 === 0;}, $arr);
Y a-t-il soit:
A) Un moyen de rendre la chaîne itérable
B) Une meilleure façon de construire le tableau de caractères à partir de la chaîne (et si oui, qu'en est-il de l'autre sens?)
J'ai l'impression de manquer quelque chose d'évident ici.
array_filter
dans ce sens pourrait être mieux fait avec des fonctions string ou reg-ex