PHP - 迭代字符串字符

2022-08-30 06:42:46

有没有一种很好的方法来迭代字符串的字符?我希望能够在字符串的字符上做,,,等。foreacharray_maparray_walkarray_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)从字符串构建字符数组的更好方法(如果是这样,那么另一个方向呢?

我觉得我在这里错过了一些明显的东西。


答案 1

使用str_split来迭代 ASCII 字符串(自 PHP 5.0 起)

如果您的字符串包含 ASCII(即“英语”)字符,请使用str_split

$str = 'some text';
foreach (str_split($str) as $char) {
    var_dump($char);
}

使用mb_str_split来迭代 Unicode 字符串(从 PHP 7.4 开始)

如果您的字符串可能包含 Unicode(即“非英语”)字符,则必须使用mb_str_split

$str = 'μυρτιὲς δὲν θὰ βρῶ';
foreach (mb_str_split($str) as $char) {
    var_dump($char);
}

答案 2

迭代字符串:

for ($i = 0; $i < strlen($str); $i++){
    echo $str[$i];
}

推荐