【问题标题】:Converting foreach to for loop [closed]将 foreach 转换为 for 循环
【发布时间】:2013-11-25 15:04:28
【问题描述】:

如果长度大于 6,我有一个从数组中删除的脚本。

foreach ($array as $key=>$value) 
{
    if (strlen($value) > 6) 
    {
        unset($array[$key]);
    }
}

我将其转换为 for 循环:

for($i=0, $j=0 ; $i<count($array) ; $i++)
{
    if(strlen($array[$i])<6)
    {
        $lessthan6[$j] = $array[$i];
        $j = $j+1;
    }
}

这并没有取消它刚刚存储的数组到一个新的数组变量。

for loop 中的 foreach($values as #value =&gt; $val) 是什么?我很困惑。感谢您在高级方面帮助我。

【问题讨论】:

  • 在for循环中你使用了&lt;6而不是&gt;6
  • 你能更好地解释你的问题吗?你想做什么?
  • @Caffè for 循环中的foreach($values as $value =&gt; $val) 是什么?
  • @noizer 我需要将 foreach 语句转换为 for 循环
  • @Destiny for($i=0; $i

标签: php arrays for-loop foreach


【解决方案1】:
for ($i = 0, $length = count($array); $i < $length; $i++) {
    if (strlen($array[$i]) > 6) {
        unset($array[$i]);
    }
}

【讨论】:

【解决方案2】:
$keys = array_keys($values);
for($i = 0; $i < count($values); $i++) {
    $key = $key[$i];
    $value = $values[$key];
}

你应该看看 array_slice() 如果我理解正确的话,这会让你的任务变得更容易

【讨论】:

    【解决方案3】:

    逆序读取数组:

    for($i=count($array) - 1; $i>= 0 ; $i--)
    {
        if(strlen($array[$i]) > 6)
        {
            unset($array[$i]);
        }
    }
    

    【讨论】:

      【解决方案4】:
      <?php
      $array = array("Prashant", "Ghimire" , "is" , "a", "good", "boy");
      for($i=0, $j=0 ; $i<count($array) ; $i++)
      {
          if(strlen($array[$i]) <= 6)
          {
             unset($array[$i]);
          }
      }
      var_dump($array);
      ?>
      

      【讨论】:

      • @peashant 有什么办法可以取消它而不是把它放在新变量上?
      • 使用 var_dump($array);终于