有没有一种很好的方式来遍历字符串中的每个字符?我想能够像对待数组一样使用
强制类型转换并不能帮助我(它会将整个字符串看作一个数组元素),而我找到的最佳解决方案是使用 for 循环构建数组。但我感觉应该有更好的方法。我的意思是,如果可以对其进行索引,那么也应该能够进行迭代才对吧?
这就是我目前掌握的最佳方法了。
foreach
, array_map
, array_walk
, array_filter
等方法来处理字符串的每个字符。强制类型转换并不能帮助我(它会将整个字符串看作一个数组元素),而我找到的最佳解决方案是使用 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) 构建字符数组更好的方法(如果有的话,如何实现另一种方向?)
我感觉我错过了什么显而易见的东西。
array_filter
做的大多数事情都可以用字符串或正则表达式函数更好地完成。 - jon_darkstar