elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Convertir Array de php a Array de javascript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Convertir Array de php a Array de javascript  (Leído 4,623 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Convertir Array de php a Array de javascript
« en: 23 Enero 2012, 18:05 pm »

Necesitaba pasar un array multidimensional gigante a javascript para poder manipularlo desde el cliente (explorador) sin la necesidad de estar haciendo peticiones multiples al servidor atraves de ajax.

Se me ocurrió utilizar json pero tube problemas debido a que json_encode() solo funciona con carácteres utf8 y no utilizo utf8 debido a acentos y eñes en cajas de texto y base de datos y tendria que decodificar todo a utf8 o pasar todo a htmlentities pero por asuntos de seguridad no lo hago.

Se me ocurrió también usar serialize pero la única función buena que encontré era de phpjs.org, pero lamentablemente me dió error, no reconocó las multiples dimensines de mi array.

Asi que después de buscar y buscar y buscar sin éxito decidí hacer mi función que convierte cualquier array multidimensional de php en array de javascript.

No puede convertir objetos que no sean arrays, strings, booleanos o integers.

Si quieres pueden modificarlo para aceptar valores float, pharseInt() o booleano directo, yo prefiero binario 1:0 para valores booleanos.

Código
  1. function toArrJs($array, $callback, $recursive = false){
  2. if(!is_array($array))
  3. return ''; /* No es un array */
  4. $return = ($recursive ? '' : 'var ').$callback." = new Array();\n";
  5.  
  6. foreach($array as $var => $val){
  7. if(is_array($val)){
  8. $return .= toArrJs($val, $callback."['".urlencode($var)."']'", true);
  9. }else{
  10. if(is_numeric($val))
  11. $return .= $callback."['".urlencode($var)."'] = ".(int)$val.";\n";
  12. else
  13. $return .= $callback."['".urlencode($var)."'] = '".str_replace(array('%','+'), array('\\x', ' '), urlencode($val))."';\n";
  14. }
  15. }
  16. return $return;
  17. }
  18.  
  19. $array = array(
  20. 'uno' => 'item1',
  21. 'dos' => array(
  22.  'a' => 'letra a',
  23.  'b' => 'letra b'
  24. )
  25. );
  26. echo toArrJs($array, 'callback');

Saludos.


« Última modificación: 23 Enero 2012, 19:14 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
convertir text box en array
Programación Visual Basic
GrTk 3 9,517 Último mensaje 22 Abril 2007, 20:57 pm
por yovaninu
Problema con array javascript
Scripting
maue75 0 2,439 Último mensaje 22 Mayo 2007, 19:32 pm
por maue75
Copiar parte de una array a otra array
Programación Visual Basic
sircid 3 5,276 Último mensaje 19 Diciembre 2007, 11:27 am
por LeandroA
parse_str, convertir querystring a array
PHP
raul338 3 4,073 Último mensaje 5 Junio 2011, 21:25 pm
por raul338
¿Como se recogian datos en un array?
.NET (C#, VB.NET, ASP)
lessionone 2 3,097 Último mensaje 15 Abril 2012, 12:08 pm
por lessionone
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines