Có một cách hay để lặp lại trên các ký tự của một chuỗi không? Tôi muốn để có thể làm foreach
, array_map
, array_walk
, array_filter
vv trên các nhân vật của một chuỗi.
Kiểu truyền / tung hứng không đưa tôi đến bất cứ đâu (đặt toàn bộ chuỗi là một thành phần của mảng) và giải pháp tốt nhất tôi tìm thấy chỉ đơn giản là sử dụng vòng lặp for để xây dựng mảng. Nó cảm thấy như nên có một cái gì đó tốt hơn. Ý tôi là, nếu bạn có thể lập chỉ mục cho nó thì bạn cũng không thể lặp đi lặp lại chứ?
Đây là thứ tốt nhất tôi có
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);
Có phải không:
A) Một cách để tạo chuỗi lặp
B) Cách tốt hơn để xây dựng mảng ký tự từ chuỗi (và nếu vậy, làm thế nào về hướng khác?)
Tôi cảm thấy như tôi đang thiếu một cái gì đó rõ ràng ở đây.
array_filter
nghĩa này có thể được thực hiện tốt hơn với các hàm chuỗi hoặc reg-ex