2013-06-30 2 views
3

에 PHP 배열을 포맷하는 방법 :나는이 PHP 배열을 문자열

$items = array (
    "Item 1" => "Value 1", 
    "Item 2" => "Value 2", 
    "Item 3" => "Value 3" 
); 

내가 들어 본 적이없는 우아한 PHP 함수는이 같은 작업을 수행 할 수있는 경우 궁금 오전 :

$output = ""; 
foreach ($items as $key => $value) { 
    $output .= sprintf("%s: %s\n" , $key , $value); 
} 
echo $output; 

은 물론, 출력은 것이다 :

또한
Item 1: Value 1 
Item 2: Value 2 
Item 3: Value 3 

, 당신은 무엇을 부릅니까? 직렬화 해제?

+4

'var_dump' 나'print_r' 같은 것이 필요합니까? –

+3

매번 현재 값으로'$ output'을 다시 반영하기 때문에 원하는 결과를 출력하지 못합니다. – cheesemacfly

+0

print_r을 포맷 할 수있는 스크립트가 있지만 위와 같이 할 수 있습니다. –

답변

5

항상 array_walk 기능이 있습니다. 귀하의 예는 다음과 같이 보일 수 있습니다 : 코드를 통해 필요에 따라

function test_print($value, $key) { 
    echo sprintf("%s: %s\n" , $key , $value); 
} 

$items = array (
    "Item 1" => "Value 1", 
    "Item 2" => "Value 2", 
    "Item 3" => "Value 3" 
); 

array_walk($items, 'test_print'); 

함수를 정의 후에는 array_walk($items, 'test_print');을 다시 사용할 수 있습니다.

다차원 배열을 다루는 경우 array_walk_recursive 함수도 있습니다.

+0

이것은 정말 좋은 방법입니다. 나는 그것을 단순화하는 것이 좋으며, 코드를 더 이해하기 쉽게 만든다. –

1

연결 연산자가 누락 된 점을 제외하고는 솔루션에 아무런 문제가 없습니다.

$output = ""; 
foreach ($items as $key => $value) { 
    $output .= sprintf("%s: %s\n" , $key , $value); 
} 
echo $output; 

단 하나의 차원 배열 만 처리한다는 점에 유의하십시오.

PHP에 내장 함수가 너무 많아서 실제로 코드를 작성해야한다는 것을 잊을 때가 있습니다. 주석에 언급 된 바와 같이 array_reduce과 같은 array_ * 함수 중 하나를 사용할 수는 있지만 솔루션에 비해 복잡성이 더 커질뿐입니다.

관련 문제