我有相同数组的内部循环, 但是在内部循环中我删除了一些元素,新数组被分配给主数组,但问题是主循环索引仍未改变!
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
非常感谢任何帮助!
答案 0 :(得分:0)
不要更改原始阵列!在进入循环之前创建该数组的副本,然后从副本中删除元素,其中包含必要的内容。
答案 1 :(得分:0)
使用while (list($index, $mainNewsletterObj) = each($newsletters))
代替foreach ($newsletters as $index=>$mainNewsletterObj)