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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  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 3,189 veces)
WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.409


The Hacktivism is not a crime


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

Telegram: @WHK102 - Semáforo Epidemiologico Chile
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 7,678 Último mensaje 22 Abril 2007, 20:57 pm
por yovaninu
Problema con array javascript
Scripting
maue75 0 1,545 Último mensaje 22 Mayo 2007, 19:32 pm
por maue75
Copiar parte de una array a otra array
Programación Visual Basic
sircid 3 4,079 Último mensaje 19 Diciembre 2007, 11:27 am
por LeandroA
parse_str, convertir querystring a array
PHP
raul338 3 2,699 Último mensaje 5 Junio 2011, 21:25 pm
por raul338
¿Como se recogian datos en un array?
.NET (C#, VB.NET, ASP)
lessionone 2 1,874 Último mensaje 15 Abril 2012, 12:08 pm
por lessionone
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines