【问题标题】:for loop with assignment in php在php中进行赋值的for循环
【发布时间】:2013-05-01 18:30:27
【问题描述】:

当我想迭代一个数组时,我通常会这样做:

foreach ($array as $a)
{
   //do something with $a
}

我只是想知道是否可以使用for 循环执行类似的操作:

for ($i = 0; $i < count($array); $a = $array[$i]; $i ++)
{
   //do something with $a
}

编辑:当我测试上面的代码时,for 语法无效。

【问题讨论】:

  • 你为什么不试试看你是否得到相同的结果?
  • 为什么?你不能在循环内分配$a 吗?
  • @HunterMcMillen,显然我已经尝试过代码,它不是一个有效的表达式
  • 只在手册中查找会比输入这个问题要快。
  • @manix 你的帖子里哪里说的?

标签: php for-loop foreach variable-assignment


【解决方案1】:

跳过 for 循环的 $a = $array[$i] 部分(这是在循环的内部分配的,而不是在循环的声明中)

你应该这样做:

for ($i = 0; $i < count($array); $i ++)
{
   $a = $array[$i]; //Gets value of element in array $array
   //Do something with it...
}

你说你想控制一个数组的元素。 您可以通过这样做(在 foreach 循环中添加键值)来实现等价

foreach ($array as $key=>$i)
{
   $a = $i[$key];
}

【讨论】:

    【解决方案2】:

    用逗号替换第三个分号。这不是完整的解决方案(分配太晚了),但它应该足以解释 for 语句的工作原理。

    【讨论】:

    • 好的,现在我对这个话题更清楚了:看起来for loop只接受boolean的声明条件
    • 好吧,比如我认为for循环就是基于这个概念:for(|inicialization| |condition| |counter|)。所以,我添加更多条件(返回布尔值)没有问题,例如:for ($i = 0; $i &lt; count($array); true; $i ++)
    【解决方案3】:

    for 循环不需要处理 $a = $array[$i]; 作为其参数的一部分。 您可以将其移动到循环体,如下所示: for ($i = 0; $i < count($array); $i++){
    $a = $array[$i]; //do something with $a }

    【讨论】:

      【解决方案4】:
      for ($i = 0; $i < count($array);  $i ++){
          $a = $array[$i];
      }
      

      for 循环定义采用您提供的四个语句的三个语句。将 $a 的赋值移到实际的循环中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-20
        • 2016-09-24
        • 2021-01-20
        • 2019-10-31
        • 2016-01-17
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多