elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 13:12  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  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 487 veces)
WHK
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


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

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
function toArrJs($array, $callback, $recursive = false){
if(!is_array($array))
return ''; /* No es un array */
$return = ($recursive ? '' : 'var ').$callback." = new Array();\n";
 
foreach($array as $var => $val){
if(is_array($val)){
$return .= toArrJs($val, $callback."['".urlencode($var)."']'", true);
}else{
if(is_numeric($val))
$return .= $callback."['".urlencode($var)."'] = ".(int)$val.";\n";
else
$return .= $callback."['".urlencode($var)."'] = '".str_replace(array('%','+'), array('\\x', ' '), urlencode($val))."';\n";
}
}
return $return;
}
 
$array = array(
'uno' => 'item1',
'dos' => array(
 'a' => 'letra a',
 'b' => 'letra b'
)
);
echo toArrJs($array, 'callback');

Saludos.


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

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para pasar un array que esta en ARGV[] a un array INTEGER..
Programación General
nitr0us 7 1,998 Último mensaje 18 Febrero 2004, 17:23
por zheo
convertir text box en array
Programación Visual Basic
GrTk 3 3,588 Último mensaje 22 Abril 2007, 20:57
por yovaninu
Problema con array javascript
Scripting
maue75 0 511 Último mensaje 22 Mayo 2007, 19:32
por maue75
javascript - limpiar array
Desarrollo Web
Hadess_inf 3 3,602 Último mensaje 2 Octubre 2010, 16:46
por Franki
¿Como se recogian datos en un array?
.NET
lessionone 2 358 Último mensaje 15 Abril 2012, 12:08
por lessionone
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines