2013-02-21 67 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) ; 
相關問題