2013-02-21 68 views
1

经过大量搜索(并找到关于multidims的无尽帖子,但没有单个昏暗),我想我会问这个问题。PHP:将1维数组拼成一个间隔的字符串

我有一个数组

$arr = array('foo' => 'bar'); 

,并正在寻找的

$str = 'foo bar'; 

输出这必须是一个一个套,没有递归循环等等等等,我想它会必须是某种或另一种lambda。这个数组永远不会只有一个键和一个值。

我认为它会成为看起来像

$arr = array('foo' => 'bar'); 
echo 'Authorization: ' . array_walk($arr, function ($v, $k) { echo "$k $v"; }); 

不幸的是最终结果为foo barAuthorization: 1

不知道那里的1来自= P

+3

*“不知道1从哪里来”*:'array_walk'返回一个布尔值,在你的情况下'true'在字符串连接时被转换为'1'。见http://php.net/manual/en/function.array-walk.php。 – 2013-02-21 01:30:42

+0

哦,你要配对字符串... – Popnoodles 2013-02-21 01:31:28

+0

你的array_walk是输出对;您希望它创建字符串并将其返回。 – 2013-02-21 01:32:01

回答

7

这应该是因为很容易数组刚被初始化并且指针位于数组的开头:

echo 'Authorization: ' . key($arr) . ' ' . current($arr); 

当然,如果您已经从数组中读取数据,则在执行此操作之前,您应该先执行reset(),以将指针返回到数组的开头。

+0

+1非常整洁的答案 – Popnoodles 2013-02-21 01:37:34

+0

是的伟大工程,等待接受=)我忘记了'key()'存在 – ehime 2013-02-21 01:38:26

-1

PHP处理功能之前,处理它前面的字符串。尝试用return代替echo。我认为1来自array_walk函数的成功处理。

echo 'Authorization: ' . array_walk($arr, function ($v, $k) { return "$k $v"; }); 

UPDATE:查看示例#1 http://php.net/manual/en/function.key.php

+0

会不会有语法错误? – Popnoodles 2013-02-21 01:34:12

+0

回调的返回值被忽略。 'array_walk' * always *返回一个布尔值。 – 2013-02-21 01:34:26

+0

然后他应该使用foreach或我猜测的东西迭代函数。 – AmazingDreams 2013-02-21 01:35:38

-3

“这阵再也不会有比一个键,虽然单个值更”

echo 'Authorization: ' . array_shift(array_keys($arr)). ' ' . array_shift($arr) ; 
相关问题