php array loading into javascript
In php
//Bla being the php array you want to give to javascript. Create it however you like
$bla = array();
$bla[] = 'cat';
$bla[] = 'dog';
$bla[] = 'bat';
echo '<script>var myarray = '.json_encode($bla) .';</script>';
The above code will then output a script tag contain a varible called myarray, then contents of which will be JSON specifying the above array (json_encode formats the array in to javascript internal syntax- the array will probably look like ['cat','dog','bat] )
You can then get values from the JavaScript array as so:
<script>
console.log(myarray[2]);
</script>
Your PHP code is executed before your Javascript, thus it doesn't make sense to use it this way.
Instead, you should do something like this:
<?php for ($i=0;$i<48;$i++):?>
name[<?php echo $i;?>] = "<?php echo giveJS();?>";
<?php endfor; ?>
In fact, if your PHP is that simple, you don't need a function:
<?php foreach ($names as $i=>$name):?>
name[<?php echo $i;?>] = "<?php echo $name;?>";
<?php endforeah;?>
In both case, you'll have a Javascript like that:
name[0] = 'name0';
name[1] = 'name1';
...
name[47] = 'name47';
This is a common mistake for people starting web development. The important thing to realize is that all of your PHP code runs before the javascript starts*. If you take a look at the javascript that gets to the browser you'll see
var names = new Array();
for(var i = 0; i < 48; i++) {
names[i] = "foo";
}
which explains why each element is the same. A nicer way to do this is to use json_encode in PHP to just transfer the array into a JS variable. Like this:
var names=<?php echo json_encode($names);?>;
*For the people writing comments about Javascript running at the same time as the PHP, either by starting the JS early or using AJAX, yes, I'm aware, but for a beginner the model of PHP totally generates then JS starts running is simpler to understand.