改变循环索引

时间:2013-04-03 09:04:14

标签: php foreach

我有相同数组的内部循环, 但是在内部循环中我删除了一些元素,新数组被分配给主数组,但问题是主循环索引仍未改变!

foreach ($newsletters as $index=>$mainNewsletterObj) {
    // var_dump($newsletters); // it prints new DATA !

         // the problem is here !
    echo 'up index is '.$index .'<br/>';  // it prints old index!!!!!!!!!!

      // make a copy of main array
      $newslettersArray = $newsletters; 

        //inner loop
     foreach ($newslettersArray as $key => $newsletterObj) {

    if ($newsletterObj['month'] == 3 );

         unset($newslettersArray[$key]);  //remove element
      } else
      {
     // make a new array of modified one to start index from 0
     $newslettersArray1 = array_values($newslettersArray); // to start index from 0

      // assign new modified array to the original one
     $newsletters = $newslettersArray1;

  }

}   // end inner loop

$index=0;
  echo 'down index is '.$index .'<br/>';  // it prints 0
 }  // end of outer loop

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

不要更改原始阵列!在进入循环之前创建该数组的副本,然后从副本中删除元素,其中包含必要的内容。

答案 1 :(得分:0)

使用while (list($index, $mainNewsletterObj) = each($newsletters))代替foreach ($newsletters as $index=>$mainNewsletterObj)

相关问题