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 otra manera.
Mi primera inclinación es el uso, foreach
pero dado que mi método podría ser llamado muchas veces en una sola solicitud, temo que sea demasiado lento.
<?php
$Amp = $IsXhtml ? '&' : '&';
$Parameters = array('Action' => 'ShowList', 'Page' => '2');
$QueryString = '';
foreach ($Parameters as $Key => $Value)
$QueryString .= $Amp . $Key . '=' . $Value;
¿Hay una manera mas rápida?
Respuestas:
Puede utilizar
http_build_query()
para hacer eso.fuente
http_build_query
carácter especial de escapeComo acotación al margen, estaba buscando encontrar 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 ...
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 :)
fuente
Si no le preocupa el formato exacto, sin embargo, desea algo simple pero sin los saltos de línea
print_r
, también puede usarlojson_encode($value)
para una salida formateada rápida y simple. ( tenga en cuenta que también funciona bien en otros tipos de datos )fuente
Esta es mi solución, por ejemplo, para atributos de datos div:
fuente
Una forma es usar
print_r(array, true)
y devolverá la representación de cadena de la matrizfuente
key=value
unido con un separador provisto.fuente
Una línea para crear una cadena de atributos HTML (con comillas) a partir de una matriz simple:
Ejemplo:
fuente
Mi solución:
fuente
¿Qué pasa con esto más corto, más transparente, pero más intuitivo con array_walk?
fuente
Esta es la versión más básica que se me ocurre:
fuente
key=value
con un separador elegido!$companies->toArray()
- esto es solo por si su$variable
es un objeto, de lo contrario, simplemente pase $ companies.¡Eso es!
fuente