A veces hecho de menos en PHP una función para concatenar arrays asociativos, algo parecido a la función http_build_query pero que permita especificar el texto a usar para concatenar cada par clave-valor en vez del = y también poder especificar el texto para concatenar el resultado en lugar de &.
Normalmente las soluciones que he visto para afrontar esta necesidad son iterativas así que tratando de hacer algo parecido con funciones nativas encontré una solución con las funciones vprintf, vsprintf y vfprintf.
Hay varios usos para este tipo de concatenaciones tales como generar encabezados HTTP, generar archivos YAML, archivos INI, etc.
- // Generar encabezados HTTP
- $glue = ": %s\r\n";
- $headers = [
- 'Content-Type' => 'text/html',
- 'Referer' => 'http://www.joaquinfernandez.net/blog'
- ];
- // Escribimos las cabeceras en la salida estándar.
- vprintf(implode($glue, array_keys($headers)) . $glue, $headers);
- // Generar archivo YAML
- $glue = ": \"%s\"\n";
- $values = [
- 'description' => 'Mi libro de apuntes',
- 'name' => 'jfBlog'
- ];
- // Escribimos en el archivo.
- $yamlFile = fopen('/path/to/file.yml', 'w');
- vfprintf($yamlFile, implode($glue, array_keys($values)) . $glue, $values);
- fclose($yamlFile);