【问题标题】:Foreach a string in PHP在PHP中foreach一个字符串
【发布时间】:2018-10-11 00:11:35
【问题描述】:

最近,我发现需要通过string 来处理他的信

据我所知,PHP 中的string 表示为文档中所述的array 字节。

那我自然而然的写了:

$str = 'Hello';
foreach ($str as $letter) {
   doMyThingsOnLetter($letter);
}

很遗憾,我收到一条错误消息,提示我为 foreach 提供了 invalid argument

我知道这项工作:

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

所以在这里,$str 被视为一个数组,但 foreach 我们收到了无效参数的错误(虽然它在文档中声明它允许数组)

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

PS:我知道str_split() 是为此目的而存在的,但这不是我关心的问题

【问题讨论】:

标签: php arrays string foreach


【解决方案1】:

$str[$i] 不会将其视为数组。这只是substr($str, $i, 1) 的简写符号。

您可以使用str_split() 从字符串中获取字符数组:

foreach (str_split($str) as $letter)

来自documentation

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

【讨论】:

  • 我不确定这是一个完整的示例,因为您也可以通过索引设置字符,例如$str[$i] = 'z'
  • 所以,“在幕后”,PHP 将解释 [] 语法与数组的语法不同?这意味着它可以区分它在类型(字符串或数组)中的作用方式?
  • 是的,它检查值的类型;如果是字符串则获取字符,如果是数组则获取数组元素。
猜你喜欢
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 2014-05-30
  • 1970-01-01
相关资源
最近更新 更多