2017-04-13 61 views
1

,所以我undrestand字符串是charachters的数组,所以我们可以做这样的事情为什么我们不能用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只是一个理论问题,另一种替代解决方案

+0

的可能的复制[PHP - 迭代在字符串中的字符(http://stackoverflow.com/questions/4601032/php-iterate-on-string-characters) –

+0

@KrisRoofe认罪阅读加粗部分 – max

+1

这些词是新添加的。 –

回答

3

FOREACH需要阵列(或对象),和字符串不是 “真” 的数组。这只是一些帮助功能,您可以像数组一样访问字符。

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

+0

str_split - 将字符串转换为数组http://php.net/manual/en/function.str-split.php在foreach中需要数组。 –

+0

在编写时,您需要在foreach数组中。所以我从字符串数组中创建,并为它做foreach。 –

+0

问题是为什么我们不能使用foreach循环,而不是我们如何使用foreach循环来处理字符串。 –

1

Foreach循环仅适用于数组。

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

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

More Information....