Bir dizenin karakterlerini yinelemenin güzel bir yolu var mı? Ben yapabilmek istiyorum foreach
, array_map
, array_walk
, array_filter
bir dizenin karakterler vb.
Tür atama / hokkabazlık beni hiçbir yere götürmedi (tüm dizeyi dizinin bir öğesi olarak koyun) ve bulduğum en iyi çözüm, diziyi oluşturmak için bir for döngüsü kullanmaktır. Daha iyi bir şey olmalı gibi geliyor. Demek istediğim, onu indeksleyebiliyorsanız, aynı zamanda yineleme yapabilmeniz gerekmez mi?
Bu sahip olduğum en iyisi
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şağıdakilerden biri var mı:
A) Dizeyi yinelenebilir hale getirmenin bir yolu
B) Karakter dizisini dizeden oluşturmanın daha iyi bir yolu (eğer öyleyse, diğer yöne ne dersiniz?)
Burada bariz bir şeyi kaçırdığımı hissediyorum.
array_filter
bu anlamda yapacağınız her şey string veya reg-ex işlevleriyle daha iyi yapılabilir