Обычно циклом выводят повторяющиеся элементы, например
<h4>заголовок1</h4>
<div>блок1</div>
<h4>заголовок2</h4>
<div>блок2</div>
<h4>заголовок3</h4>
<div>блок3</div>
и тогда имея массив
$arr = array(array('title' => 'заголовок1', 'block' => 'блок1'),
array('title' => 'заголовок2', 'block' => 'блок2'),
array('title' => 'заголовок3', 'block' => 'блок3'));
можно его вывести с помощью цикла
foreach($arr as $item){
echo '<h4>' . $item['title'] .'</h4>';
echo '<div>' . $item['block'] .'</div>';
}
то есть в массиве у нас есть только значения, при выводи мы их заключаем в теги.
а что во втором случае у вас, я не совсем понял, зачем вы просто скопировали элементы начального массива, в новый