¿Existe una buena forma de iterar sobre los caracteres de una cadena? Me gustaría ser capaz de hacer foreach
, array_map
, array_walk
, array_filter
etc, sobre los caracteres de una cadena.
La conversión de tipos / malabares no me llevó a ninguna parte (coloque la cadena completa como un elemento de la matriz), y la mejor solución que he encontrado es simplemente usar un bucle for para construir la matriz. Parece que debería haber algo mejor. Quiero decir, si puedes indexarlo, ¿no deberías poder iterar también?
Esto es lo mejor que tengo
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);
¿Hay alguno:
A) Una forma de hacer que la cadena sea iterable
B) Una mejor manera de construir la matriz de caracteres a partir de la cadena (y si es así, ¿qué tal la otra dirección?)
Siento que me estoy perdiendo algo obvio aquí.
array_filter
en este sentido podría hacerse mejor con funciones de cadena o reg-ex