有没有一种很好的方法来迭代字符串的字符? I’d like to be able to do foreach
, array_map
, array_walk
, array_filter
etc. on the characters of a string.
类型转换/杂耍没有让我到任何地方(将整个字符串作为数组的一个元素),我发现的最佳解决方案是简单地使用 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)从字符串构建字符数组的更好方法(如果是这样,另一个方向呢?)
我觉得我在这里错过了一些明显的东西。
原文由 jon_darkstar 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 str_split 迭代 ASCII 字符串(PHP 5.0 起)
如果您的字符串 仅 包含 ASCII(即“英语”)字符,则使用 str_split 。
使用 mb_str_split 迭代 Unicode 字符串(自 PHP 7.4 起)
如果您的字符串 可能 包含 Unicode(即“非英语”)字符,那么您必须使用 mb_str_split 。