【问题标题】:Why Can't We Use Foreach Loop On The String Like For Loop为什么我们不能像 For 循环一样在字符串上使用 Foreach 循环
【发布时间】:2017-04-13 06:26:11
【问题描述】:

所以我不明白字符串是字符数组,所以我们可以做这样的事情

$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 这样的另一种替代解决方案,只是一个理论问题

【问题讨论】:

标签: php arrays string foreach


【解决方案1】:

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

foreach(str_split($str) as $k=&gt;$v)

【讨论】:

  • str_split — 将字符串转换为数组 php.net/manual/en/function.str-split.php IN foreach 需要数组。
  • 在你写的时候,你需要在 foreach 数组中。所以我从字符串数组中制作,并为它制作foreach。
  • 问题是为什么我们不能使用 foreach 循环,而不是我们如何使用 foreach 循环来处理字符串。
  • 我用文字回答了他。字符串不是数组。他现在才补充说,他不需要解决方案,我不知道他只需要理论,而不是解决方案。
【解决方案2】:

Foreach 循环仅适用于数组。

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

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

More Information....

【讨论】:

    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2015-07-20
    • 2019-01-27
    • 2016-09-24
    • 2015-12-02
    相关资源
    最近更新 更多