Это распространенная ошибка для людей, начинающих веб-разработку. Важно понимать, что весь ваш PHP-код запускается до запуска javascript *. Если вы посмотрите на javascript, который попадает в браузер, вы увидите
var names = new Array();
for(var i = 0; i < 48; i++) {
names[i] = "foo";
}
, который объясняет, почему каждый элемент одинаков. Лучший способ сделать это - использовать json_encode в PHP, чтобы просто перевести массив в переменную JS. Как это:
var names=<?php echo json_encode($names);?>;
* Для людей, пишущих комментарии о Javascript, работающем одновременно с PHP, либо с ранним запуском JS, либо с использованием AJAX, да, я в курсе, но для новичка модель PHP полностью генерирует, затем запускается JS бегать проще для понимания.