primera forma y utilizando lo que dijo pateketrueke, esta funcion de php te devuelve el equivalente en notacion json del arreglo de php(muy util si tienes que hacer mas cosas con dicho arreglo, no solo pasarselo a javascript)
asi quedaria
script.php
Código PHP:
function getTablero()
{
$fichas = array();
$pos_fichas = array();
$fichas[] = 3;
$fichas[] = 5;
$pos_fichas[] = 20;
$pos_fichas[] = 10;
$tablero = array();
for($i = 0; $i < count($fichas); $i++)
{
$tablero[$pos_fichas[$i]] = $fichas[$i];
}
return $tablero;
}
function convertirTablero($tablero)
{
return json_encode($tablero);
}
pagina.html
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?php
require_once 'script.php';
$tablero = getTablero();
?>
<script type="text/javascript">
var tablero = eval(<?php echo convertirTablero($tablero);?>);
alert(typeof tablero); //ALERTA 'OBJECT'
alert(tablero.20);//DA ERROR;
alert(tablero[20]);//ALERTA 3
</script>
<title></title>
</head>
<body>
</body>
</html>
de esta forma no tendras un arreglo en javascript sino un objeto cuyas propiedades son las claves del arreglo de php y los valores de cada clave pues los correspondientes al arreglo de php
segunda forma
script.php
Código PHP:
function getTablero()
{
$fichas = array();
$pos_fichas = array();
$fichas[] = 3;
$fichas[] = 5;
$pos_fichas[] = 20;
$pos_fichas[] = 10;
$tablero = array();
for($i = 0; $i < count($fichas); $i++)
{
$tablero[$pos_fichas[$i]] = $fichas[$i];
}
return $tablero;
}
function convertirTablero($tablero)
{
return json_encode($tablero);
}
function getArrayTablero($tablero_php)
{
$tablero_js = 'var tablero = [];';
foreach($tablero_php as $key=>$value)
{
$tablero_js .= 'tablero['.$key.'] = "'.$value.'";';
}
return $tablero_js;
}
hemos añandido una tercera funcion que devolvera la cadena de un array javascript
luego
pagina.html
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?php
require_once 'script.php';
$tablero = getTablero();
?>
<script type="text/javascript">
eval('<?php echo getArrayTablero($tablero);?>');
alert(typeof tablero);//ALERTA OBJETO PORQUE LOS ARRAYS EN
//JAVASCRIPT SON DE HECHO, OBJETOS
alert(tablero[20]);//ALERTA 3
</script>
<title></title>
</head>
<body>
</body>
</html>
por tanto que forma es la mejor? pues yo creo que la primera, te ahorras la creacion de una funcion ya que mires por donde lo mires, el arreglo que pasaras de php a javascript, este ultimo lo mirara como un objeto pero lo podras tratar siempre como un arreglo
cualquier preguntilla ya sabes ;)