有没有一种很好的方法来迭代字符串的字符?我希望能够在字符串的字符上做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)从字符串构建字符数组的一种更好的方法(如果是这样的话,其他方向又如何呢?)
我觉得我在这里遗漏了一些明显的东西。
发布于 2016-10-24 17:30:17
迭代字符串:
for ($i = 0; $i < strlen($str); $i++){
echo $str[$i];
}
发布于 2012-01-09 02:28:54
如果字符串采用Unicode格式,则应使用带有/u
修饰符的preg_split
来自php文档中的评论:
function mb_str_split( $string ) {
# Split at all position not after the start: ^
# and not before the end: $
return preg_split('/(?<!^)(?!$)/u', $string );
}
发布于 2016-02-19 05:47:20
如果只需要访问$s1,您也可以像访问数组一样访问它:
$s1 = "hello world";
echo $s1[0]; // -> h
https://stackoverflow.com/questions/4601032
复制相似问题