Llenar un array en javascript con los datos de un array en PHP

03Ene10

Se puede pasar los valores de un array obtenido mediante PHP (por ejemplo desde una base de datos) a un array en javascript de la siguiente manera:

<?php
//...
       $array_php = array(23, 24, 33, 55, 77);
//...
?>

<script type="text/javascript">
       var array_js = new Array();
       <?php
              for($i = 0; $i<count($array_php); $i++){
                     echo 'array_js['. $i .'] = '. $array_php($i) .';\n';
              }
       ?>
</script>

generando un código similar a este:

<script type="text/javascript">
       var array_js = new Array();
       array_js[0] = 23;
       array_js[1] = 24;
       array_js[2] = 33;
       array_js[3] = 55;
       array_js[4] = 7;
</script>

Si nuestro array de PHP tiene una secuencia de indices diferente a la por defecto (de 0 a n-1) deberemos hacer algunas modificaciones:

<?php
//...
       $array_php = array(5=>23, 24, 13=>33, 74=>55, 77);
//...
?>

<script type="text/javascript">
       var array_js = new Array();
       <?php
              foreach($array_php as $indice=>$valor){
                     echo "array_js[$indice] = $valor;\n";
              }
       ?>
</script>

resultando:

<script type="text/javascript">
       var array_js = new Array();
       array_js[5] = 23;
       array_js[6] = 24;
       array_js[13] = 33;
       array_js[74] = 55;
       array_js[75] = 7;
</script>

Espero sirva.
Saludos.

Mas Info



11 Responses to “Llenar un array en javascript con los datos de un array en PHP”

  1. 1 sh4

    De array PHP a array en JS en una linea:

    var array = jQuery.parseJSON(”);

    • 2 sh4

      Erm… no deja meter etiquetas PHP en los comentarios, dentro del parseJSON va un php echo $array cerrarphp

      • 3 Fabián

        Hola sh4, espero me puedas ayudar, tengo un array en javascript como este: var disabledDays = [“9-3-2012″,”9-4-2012”];
        Si quisiera hacerlo dinámico desde una base de datos en mysql, sabés cuál sería el código a utilizar. O si tuviera el array PHP: $disabledDays = array (“9-3-2012″,”9-4-2012”); se te ocurre como puedo llenar los datos de ese array PHP el array javascript.

  2. 4 jose

    amigo, tienes mal el codigo con las comas, fijate en la pagina en ingles te lo dijo porque si se utiliza el codigo que dices, no funciona por las comas.

    saludos.

  3. 5 Cialis

    8Vy8Tg Excellent article, I will take note. Many thanks for the story!

  4. 6 Jesús

    yo uso $.parseJSON del nuevo jQuery 1.4.1

  5. 7 Diego

    pero el JSON ya viene incluido dentro de PHP:

    var array_js = <?php print( json_encode($array_php)); ?>

    Lo único que diferencia es que para el caso de los indices, ya que el json lo va a convertir en un objeto javascript: cada índice será una propiedad del objeto.

  6. 8 Franco

    Todos los sitios que usan AJAX heavy (véase twitter, facebook, etc) usan eval irremediablemente para decodificar json…

    Y para que el tiempo de codificación/decodificación del json sea considerable tiene que ser un arreglo MUY grande, con lo que iterando el array e imprimiendo perderías el mismo tiempo.

  7. 9 Franco

    Bue, wordpress de mierda me filtró el código php (Y)

  8. 10 Franco

    Mucho más fácil podés usar json…

    var array_js = eval(‘(‘ + + ‘)’);

    • @Franco

      Particularmente no soy muy amigo de la utilización de eval (si existe alguna alternativa válida) sobre todo porque depende de la versión del navegador (si mal no recuerdo la versión Firefox 3.0.1 tenía algunos problemas decodificando)

      Otro situación es la doble conversión PHP->JSON (por ejemplo con json_encode de PHP) y de JSON->Javascript (con eval de Javascript) que implica un tiempo de procesamiento adicional (seguramente mínimo, pero evitable al fin de cuentas)

      Saludos



A %d blogueros les gusta esto: