Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Foreach是PHP中的字符串_Php_Arrays_String_Foreach - Fatal编程技术网

Foreach是PHP中的字符串

Foreach是PHP中的字符串,php,arrays,string,foreach,Php,Arrays,String,Foreach,最近,我遇到了一个问题,需要通过一个字符串来处理他的信 据我所知,PHP中的字符串表示为文档中所述的字节数组 然后我自然而然地写道: $str = 'Hello'; foreach ($str as $letter) { doMyThingsOnLetter($letter); } 遗憾的是,我得到一个错误,告诉我我为每个人提供了一个无效参数 我知道这项工作: $str = 'Hello'; for($i = 0; $i < strlen($str); $i++) { doM

最近,我遇到了一个问题,需要通过一个
字符串
来处理他的信

据我所知,PHP中的
字符串
表示为文档中所述的
字节数组

然后我自然而然地写道:

$str = 'Hello';
foreach ($str as $letter) {
   doMyThingsOnLetter($letter);
}
遗憾的是,我得到一个错误,告诉我我为每个人提供了一个
无效参数

我知道这项工作:

$str = 'Hello';
for($i = 0; $i < strlen($str); $i++) {
   doMyThingsOnLetter($str[$i]);
}
$str='Hello';
对于($i=0;$i
因此这里,
$str
被认为是一个数组,但是通过
foreach
我们得到了一个无效参数的错误(虽然它在文档中声明它允许数组)

因此,我想知道在PHP中是否存在某种不同类型的数组来表示字符串本身,还是这只是foreach处理数组的不同方式


注:我知道str_split()
就是为了这个目的而存在的,但这不是我关心的问题

$str[$I]
不把它当作数组。这只是
substr($str,$i,1)
的简写符号

您可以使用
str\u split()
从字符串中获取字符数组:

foreach (str_split($str) as $letter)
从:

可以通过使用方括号指定字符串后所需字符的零基偏移量来访问和修改字符串中的字符,如
$str[42]
中所述


如果不深入了解PHP使用的内部数据类型,可以考虑在不实现的情况下实现字符串。或者我不确定这是否是一个完整的示例,因为您也可以通过索引设置字符,例如
$str[$I]='z'
,因此,“幕后”,PHP将以与数组不同的方式解释
[]
语法?这意味着它将区分它在类型(字符串或数组)函数中的行为方式?是的,它检查值的类型;如果是字符串,则获取字符;如果是数组,则获取数组元素。