Есть ли хороший способ перебора символов строки? Я хотел бы быть в состоянии сделать foreach
, array_map
, array_walk
, и array_filter
т.д. на характерах строки.
Приведение типов / манипуляция никуда меня не привели (поместите всю строку как один элемент массива), и лучшее решение, которое я нашел, - это просто использовать цикл for для создания массива. Такое ощущение, что должно быть что-то получше. Я имею в виду, если вы можете проиндексировать его, разве вы не сможете итерировать?
Это лучшее, что у меня есть
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);
Есть ли:
A) Способ сделать строку итерируемой
B) Лучший способ построить массив символов из строки (и если да, как насчет другого направления?)
Я чувствую, что мне здесь не хватает чего-то очевидного.
array_filter
в этом смысле, можно было бы лучше сделать с помощью строковых функций или функций reg-ex