2013-02-21 1 views
1

많은 검색을 한 후 (multidims에 대한 끝없는 게시물을 찾았지만 하나의 희미 함이없는 경우)이 질문을 던지기로했습니다.PHP : 1 치수 배열을 간격 띄우는 문자열로 바꾸기

나는 이것은 하나의 라이너를해야하는 배열을

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

을 가지고

$str = 'foo bar'; 

의 출력을 찾고, 더 재귀 루프 등 등 등, 나는 그것의가가는 것을 생각하지 있어요 어떤 종류 또는 다른 것의 람다이어야한다. 이 배열은 하나 이상의 키와 하나의 값을 가질 필요가 없습니다.

내가 그 불행하게도 foo barAuthorization: 1

1은 P =에서 오는 어떤 생각으로 끝나는

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

뭔가를 찾고 끝낼 것 생각

+3

* "array_walk"는 문자열 연결시 '1'로 변환되는 'true'의 부울 값을 반환합니다. http://php.net/manual/en/function.array-walk.php를 참조하십시오. –

+0

아, 문자열 쌍에 ... – Popnoodles

+0

당신의 array_walk가 쌍을 출력하고 있습니다. 문자열을 만들어 대신 반환하기를 원합니다. –

답변

7

이 "이 배열은 단일 키 및하지만 단일 값 이상이 없을 것" 배열이 방금 초기화되었고 포인터는 배열의 시작 부분에 상주합니다 :

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

물론 배열에서 데이터를 읽은 경우이 작업을 수행하기 전에 reset()을 수행하기를 원할 것입니다. 그러면 포인터가 배열의 시작 부분으로 돌아갑니다.

+0

+1 매우 깔끔한 대답 – Popnoodles

+0

그래, 잘 받아들이기를 기다리고있다.) 나는'key()'가 존재한다는 것을 잊었다. – ehime

-1

PHP는 전에 기능을 처리 그 앞에있는 문자열을 처리합니다. 함수에서 echoreturn으로 바꾸어보세요. 나는 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

+0

콜백의 반환 값은 무시됩니다. 'array_walk' * always *는 부울을 반환합니다. –

+0

그런 다음 그는 foreach 또는 내가 추측하는 것으로 함수를 반복해야합니다. – AmazingDreams

-3

을 확인 이후 매우 쉽게해야

echo 'Authorization: ' . array_shift(array_keys($arr)). ' ' . array_shift($arr) ;