Có cách nào tốt đẹp để lặp lại các ký tự của chuỗi không? Tôi muốn có thể làm foreach
, array_map
, array_walk
, array_filter
v.v. trên các ký tự của một chuỗi.PHP - lặp lại trên các ký tự chuỗi
Loại đúc/tung hứng không đưa tôi đến bất kỳ đâu (đặt toàn bộ chuỗi như một phần tử của mảng) và giải pháp tốt nhất mà tôi đã tìm thấy đơn giản là sử dụng vòng lặp for để tạo mảng. Nó cảm thấy như có 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 trên nó, bạn cũng không thể lặp lại được không?
Đây là tốt nhất mà 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ó một trong hai:
A) Một cách để làm cho chuỗi iterable
B) Một cách tốt hơn để xây dựng các mảng nhân vậ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ư im thiếu một cái gì đó hiển nhiên ở đây.
Có lẽ bạn nên nói thêm về điều bạn đang cố gắng để hoàn thành ... nó có vẻ như có thể có một cách tốt hơn để làm điều đó bằng chuỗi hoạt động bình thường. –
không có mục tiêu thực sự ở đây. chỉ là một sự tò mò tôi đang chơi với. có vẻ lạ rằng mặc dù bạn có thể lập chỉ mục trên các chuỗi bạn không thể lặp lại. Tôi đã thất bại trong việc nghĩ đến việc sử dụng ví dụ có ý nghĩa, nhưng tôi vẫn muốn biết nếu có một số cách để lặp lại các ký tự dây mà không cần xây dựng một mảng ký tự explictly –
đó là điểm tốt, rõ ràng là ví dụ của tôi khá nông. nghĩa là - hầu hết mọi thứ bạn làm với 'array_filter' trong ý 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 hàm reg-ex –