Existe uma boa maneira de iterar os caracteres de uma string? Eu gostaria de ser capaz de fazer foreach
, array_map
, array_walk
, array_filter
etc, sobre os caracteres de uma string.
O tipo casting / juggling não me levou a lugar nenhum (coloque a string inteira como um elemento do array), e a melhor solução que encontrei é simplesmente usar um loop for para construir o array. Parece que deveria haver algo melhor. Quer dizer, se você pode indexar nele, não deveria ser capaz de iterar também?
Este é o melhor que eu tenho
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);
Existe algum:
A) Uma maneira de tornar a string iterável
B) Uma maneira melhor de construir a matriz de caracteres a partir da string (e em caso afirmativo, que tal a outra direção?)
Eu sinto que estou perdendo algo óbvio aqui.
array_filter
neste sentido poderia ser melhor realizada com funções de string ou reg-ex