Чи є приємний спосіб перебрати символи рядка? Я хотів би бути в змозі зробити 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 функцій