Два цикла foreach с одинаковыми именами переменных нарушают порядок элементов

Вот мой код:

foreach($datawallright['adds'] as &$ad){
    $ad['img'] = get_ad_pic_url($this->em->getReference("models\MmAds",$ad['id']),'/crop_');
    $ad['description'] = ucfirst(strip_tags(html_entity_decode(mb_strtolower(str_replace(array("___","---"),"",$ad['description']), "UTF-8"))));
    $ad['titleurl'] = title_url($ad['title']);
}

foreach($datawallright['adds'] as $ad){

    $this->load->view("view_wallpage_add",array("ad"=>$ad,"isuserwall"=>$isuserwall));
}

У меня есть два цикла for, проходящих через один и тот же массив. Переменные, назначенные в этих двух циклах for, одинаковы. Странная вещь, когда он повторяет второй цикл for. Первый n-1 элемент верен, но вместо последнего элемента появляется элемент, предшествующий последнему. Я могу сделать все это в одном цикле. Я могу изменить имя переменной $ ad, и тогда она будет работать нормально, но я хочу знать, что случилось.

Ответы на вопрос(1)

Ваш ответ на вопрос