首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP -对字符串字符进行迭代

PHP -对字符串字符进行迭代
EN

Stack Overflow用户
提问于 2011-01-05 13:14:59
回答 5查看 181.1K关注 0票数 144

有没有一种很好的方法来迭代字符串的字符?我希望能够在字符串的字符上做foreacharray_maparray_walkarray_filter等。

类型转换/杂耍对我没有任何帮助(将整个字符串作为数组的一个元素),我找到的最好的解决方案是简单地使用for循环来构造数组。感觉应该有更好的东西。我的意思是,如果你可以对它进行索引,你不也应该能够迭代吗?

这是我最好的了

代码语言:javascript
复制
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)从字符串构建字符数组的一种更好的方法(如果是这样的话,其他方向又如何呢?)

我觉得我在这里遗漏了一些明显的东西。

EN

回答 5

Stack Overflow用户

发布于 2016-10-24 17:30:17

迭代字符串:

代码语言:javascript
复制
for ($i = 0; $i < strlen($str); $i++){
    echo $str[$i];
}
票数 112
EN

Stack Overflow用户

发布于 2012-01-09 02:28:54

如果字符串采用Unicode格式,则应使用带有/u修饰符的preg_split

来自php文档中的评论:

代码语言:javascript
复制
function mb_str_split( $string ) { 
    # Split at all position not after the start: ^ 
    # and not before the end: $ 
    return preg_split('/(?<!^)(?!$)/u', $string ); 
} 
票数 21
EN

Stack Overflow用户

发布于 2016-02-19 05:47:20

如果只需要访问$s1,您也可以像访问数组一样访问它:

代码语言:javascript
复制
$s1 = "hello world";
echo $s1[0]; // -> h
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4601032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档