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

noh*_*hat 8 php arrays

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

array( 'foo' => 'bar', 'baz' => 'qux' );
Run Code Online (Sandbox Code Playgroud)

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

array( 'foo=bar', 'baz=qux' );
Run Code Online (Sandbox Code Playgroud)

array( 0 => 'foo=bar', 1 => 'baz=qux');
Run Code Online (Sandbox Code Playgroud)

在perl中,我会做类似的事情

map { "$_=$hash{$_}" } keys %hash
Run Code Online (Sandbox Code Playgroud)

在PHP 的数组函数中有这样的东西吗?我没有看到任何东西似乎是一个方便的解决方案.

小智 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));
Run Code Online (Sandbox Code Playgroud)

  • 在 PHP 8+ 中,由于新的 `fn` 语法,它变得更加简单:`$result = array_map(fn($k, $v) => "$k=$v", array_keys($arr), array_values( $arr));` (2认同)

cha*_*aos 9

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

  • 如果您是Perl用户,这将是您在使用PHP时遇到的许多很多失望之一. (3认同)

Pet*_*ley 5

一种“好奇”的方法=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, '', '::' ) ) );
Run Code Online (Sandbox Code Playgroud)