Как объединить ключи и значения массива в PHP - PullRequest
8 голосов
/ 12 сентября 2009

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

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

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

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

т.е.

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

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

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

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

Ответы [ 4 ]

15 голосов
/ 29 марта 2014

Еще один вариант решения этой проблемы: в 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));
9 голосов
/ 12 сентября 2009
function parameterize_array($array) {
    $out = array();
    foreach($array as $key => $value)
        $out[] = "$key=$value";
    return $out;
}
4 голосов
/ 12 сентября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...