如何在PHP中组合数组的键和值

时间:2009-09-11 22:39:14

标签: php arrays

假设我在PHP中有一组键/值对:

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

将此转换为如下所示的数组的最简单方法是什么?

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

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

在perl中,我会做类似

的事情
map { "$_=$hash{$_}" } keys %hash

PHP中的panoply of array functions是否有这样的内容?我没有看到任何东西似乎是一个方便的解决方案。

4 个答案:

答案 0 :(得分:15)

这个问题的另一个选择:在PHP 5.3+上你可以使用array_map()和一个闭包(你可以用5.2之前的PHP做到这一点,但代码会变得非常混乱!)。

  

“哦,但在array_map()你只能获得价值!”。

是的,这是对的,但我们可以映射多个阵列! :)

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

答案 1 :(得分:9)

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

答案 2 :(得分:4)

一种“好奇”的方式= 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, '', '::' ) ) );

答案 3 :(得分:0)

混乱'的答案很好,很直接。但是,对于更一般的意义,您可能错过了array_map()函数,这是您在map { "$_=$hash{$_}" } keys %hash示例中提到的函数。