C'è un modo piacevole 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.PHP - iterare su caratteri stringa
Il cast di tipo/juggling non mi ha portato ovunque (metto l'intera stringa come un elemento dell'array) e la soluzione migliore che ho trovato è semplicemente usare un ciclo for per costruire l'array. Sembra che ci dovrebbe essere qualcosa di meglio. Voglio dire, se puoi indicizzare su di esso non dovresti essere in grado di ripetere anche tu?
Questa è la migliore 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'è uno:
A) Un modo per rendere la stringa iterabile
B) Un modo migliore per costruire l'array di caratteri dal stringa (e se sì, che dire circa l'altra direzione?)
Mi sento come mi manca qualcosa di ovvio qui.
Forse si dovrebbe dire di più su che si sta cercando di realizzare ... sembra che ci potrebbe essere un modo migliore per farlo utilizzando le normali operazioni sulle stringhe. –
non hanno un vero obiettivo qui. solo una curiosità con cui stavo giocando. sembrava strano che anche se puoi indicizzare le stringhe non puoi iterare. non riuscivo nemmeno a pensare a usi di esempi significativi, ma mi piacerebbe comunque sapere se c'è un modo per iterare sui personaggi delle stringhe senza costruire un array di caratteri esplicitamente –
ma, ovviamente, i miei esempi sono piuttosto superficiali. vale a dire - per lo più tutto ciò che faresti con 'array_filter' in questo senso potrebbe essere fatto meglio con le funzioni string o reg-ex –