Como combinar as chaves e os valores de uma matriz em PHP

Diga que eu tenho uma matriz de pares de chaves / valores em PHP:

array( 'foo' => 'bar', 'baz' => 'qux' ); 

Qual é a maneira mais simples de transformar isso em uma matriz que se parece com o seguinte?

 array( 'foo=bar', 'baz=qux' ); 

ie

 array( 0 => 'foo=bar', 1 => 'baz=qux'); 

Em perl, eu faria algo como

 map { "$_=$hash{$_}" } keys %hash 

Existe alguma coisa assim na panóplia de funções de matriz em PHP? Nada que eu olhava parecia uma solução conveniente.

 function parameterize_array($array) { $out = array(); foreach($array as $key => $value) $out[] = "$key=$value"; return $out; } 

Outra opção para este problema: no PHP 5.3+, você pode usar array_map() com um fechamento (você pode fazer isso com o PHP antes de 5.2, mas o código ficará bastante confuso!).

“Oh, mas no array_map() você só obtém o valor!”.

Sim, está certo, mas podemos mapear mais de uma matriz! 🙂

 $arr = array( 'foo' => 'bar', 'baz' => 'qux' ); $result = array_map(function($k, $v){ return "$k=$v"; }, array_keys($arr), array_values($arr)); 

Uma maneira “curiosa” de fazê-lo = P

 // using '::' as a temporary separator, could be anything provided // it doesn't exist elsewhere in the array $test = split( '::', urldecode( http_build_query( $test, '', '::' ) ) ); 

A resposta do caos é legal e direta. Para um sentido mais geral, porém, você pode ter perdido a function array_map() que é o que você aludiu ao seu map { "$_=$hash{$_}" } keys %hash example.