C'è un bel modo per iterare sui caratteri di una stringa? Mi piacerebbe essere in grado di fare foreach
, array_map
, array_walk
, array_filter
ecc sui caratteri di una stringa.
Il tipo casting / juggling non mi ha portato da nessuna parte (metti l'intera stringa come un elemento dell'array) e la migliore soluzione che ho trovato è semplicemente usare un ciclo for per costruire l'array. Sembra che dovrebbe esserci qualcosa di meglio. Voglio dire, se puoi indicizzarlo non dovresti essere in grado di iterare anche tu?
Questo è il meglio che ho
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);
C'è o:
A) Un modo per rendere la stringa iterabile
B) Un modo migliore per costruire l'array di caratteri dalla stringa (e se è così, che ne dici dell'altra direzione?)
Mi sento come se mi mancasse qualcosa di ovvio qui.
array_filter
in questo senso potrebbe essere fatto meglio con le funzioni stringa o reg-ex