【发布时间】:2011-06-03 19:34:31
【问题描述】:
有没有很好的方法来迭代字符串的字符?我希望能够对字符串的字符执行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所做的大多数事情都可以用字符串或正则表达式函数更好地完成 -
解决projecteuler.net/problem=20 可能是一个示例(尽管有些做作)。
-
一个注释,关于 for($i=0; $i
标签: php string character-arrays