La forma más rápida de implosionar una matriz asociativa con claves
⏰ 4 minutos de lectura
matpie
Estoy buscando una forma rápida de convertir una matriz asociativa en una cadena. La estructura típica sería como una cadena de consulta de URL pero con separadores personalizables para que pueda usar ‘&‘ para enlaces xhtml o ‘&‘ de lo contrario.
Mi primera inclinación es usar foreach pero dado que mi método podría llamarse muchas veces en una solicitud, me temo que podría ser demasiado lento.
Genera una cadena de consulta codificada en URL a partir de la matriz asociativa (o indexada) proporcionada.
Estaba tratando de encontrar este método en la API de PHP, este es definitivamente el camino a seguir. Si no, la alternativa es utilizar un método de implosión modificado como uk2.php.net/manual/en/function.implode.php#84684 pero http_build_query() será correctamente más rápido.
–Mark Davidson
2 de enero de 2009 a las 21:11
Me pregunto si esta es realmente la forma más rápida para la pregunta general. Hay algo de codificación en esta función. Entonces, si no es para una URL, ¿es esto realmente más rápido que array_walk y qué sucede si no lo quiere codificado?
– e-motivo
31 de enero de 2014 a las 23:12
el problema es http_build_query escape char especial
– Sísifo
9 de febrero de 2015 a las 15:42
He comparado serialize(), json_encode() y http_build_query(). http_build_query() ganó por un ligero margen sobre serialize(), y json_encode fue el más lento con diferencia.
– Ernest V
24 de febrero de 2015 a las 23:05
También codifica caracteres especiales, por lo que no es una buena opción.
– awavi
10 de junio de 2015 a las 21:11
Si no te preocupa el exacto formato sin embargo, desea algo simple pero sin los saltos de línea de print_r también puedes usar json_encode($value) para una salida formateada rápida y sencilla. (tenga en cuenta que también funciona bien en otros tipos de datos)
Aparte, estaba buscando la mejor manera de implosionar una matriz asociativa pero usando mis propios separadores, etc.
Así que hice esto usando la función array_walk() de PHP para permitirme unir una matriz asociativa en una lista de parámetros que luego podrían aplicarse a una etiqueta HTML…
// Create Params Array
$p = Array("id"=>"blar","class"=>"myclass","onclick"=>"myJavascriptFunc()");
// Join Params
array_walk($p, create_function('&$i,$k','$i=" $k=\"$i\"";'));
$p_string = implode($p,"");
// Now use $p_string for your html tag
Obviamente, podría incluir eso en su propia función de alguna manera, pero le da una idea de cómo puede unirse a una matriz asociativa utilizando su propio método. Espero que ayude a alguien 🙂
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
No olvide que si está generando HTML, la sintaxis correcta es & no &, ahora esto está mal JOE sí, funciona pero no es HTML válido.
– TravisO
6 de enero de 2009 a las 18:21