为什么我们不能在字符串中使用Foreach循环

时间:2017-04-13 06:26:11

标签: php arrays string foreach

所以我不知道并且字符串是一系列字符串,所以我们可以做这样的事情

$str = 'abc';
for ($i = 0; $i < strlen($str); $i++){
   echo "$i -> $str[$i] <br /> ";
}

导致

0 -> a
1 -> b
2 -> c 

但是为什么我不能用foreach循环来完成这个过程?

$str = 'abc';
foreach($str as $k=>$v )
    echo "$k -> $v <br /> ";

结果将是

 Warning: Invalid argument supplied for foreach() 

这不是一个实际的问题,我不是试图在字符串上使用foreach而我不需要像str_split那样的另一种替代解决方案只是一个理论问题

2 个答案:

答案 0 :(得分:4)

Foreach需要数组(或对象),而字符串不是“true”数组。这只是一些帮助功能,您可以像在数组中一样访问字符。

foreach(str_split($str) as $k=>$v)

答案 1 :(得分:1)

Foreach循环仅适用于数组。

foreach构造提供了一种迭代数组的简单方法。 foreach仅适用于数组和对象,并且当您尝试在具有不同数据类型或未初始化变量的变量上使用它时将发出错误。有两种语法:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

More Information....