Czy istnieje dobry sposób na iterację znaków w ciągu? Chciałbym być w stanie to zrobić foreach
, array_map
, array_walk
, array_filter
itd. W postaci napisu.
Typ casting / juggling nigdzie mnie nie zaprowadził (umieść cały łańcuch jako jeden element tablicy), a najlepszym rozwiązaniem, jakie znalazłem, jest użycie pętli for do skonstruowania tablicy. Wydaje się, że powinno być coś lepszego. Chodzi mi o to, że jeśli możesz na nim indeksować, czy nie powinieneś również być w stanie iterować?
To najlepsze, jakie mam
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);
Czy istnieje:
A) Sposób na iterowalność ciągu
B) Lepszy sposób na zbudowanie tablicy znaków z łańcucha (a jeśli tak, to co powiesz na drugą stronę?)
Czuję, że brakuje mi czegoś oczywistego.
array_filter
w tym sensie, można lepiej zrobić za pomocą funkcji string lub reg-ex