Как объединить ключи и значения массива в PHP

Скажем, у меня есть массив пар ключ / значение в PHP:

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

Каков самый простой способ преобразовать это в массив, который выглядит следующим образом?

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

т.е.

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

В perl я бы сделал что-то вроде

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

Есть ли что-то вроде этого в panoply функций массива в PHP? Ничто из того, что я смотрел, казалось удобным решением.

Solutions Collecting From Web of "Как объединить ключи и значения массива в PHP"

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

Другой вариант для этой проблемы: на PHP 5.3+ вы можете использовать array_map() с закрытием (вы можете сделать это с PHP до 5.2, но код будет довольно запутанным!).

«О, но на array_map() вы получите только значение!».

Да, правильно, но мы можем сопоставить несколько массивов! 🙂

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

«Любопытный» способ сделать это = 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, '', '::' ) ) ); 

Ответ хаоса хорош и прямолинейный. Для более общего смысла, возможно, вы пропустили array_map() которой вы ссылались, с помощью map { "$_=$hash{$_}" } keys %hash .