假设我在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是否有这样的内容?我没有看到任何东西似乎是一个方便的解决方案。
答案 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
示例中提到的函数。