Скажем, у меня есть массив пар ключ / значение в 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? Ничто из того, что я смотрел, казалось удобным решением.
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
.