2013-06-13 6 views
1

는 내가 가진 :함수 결과를 JSON 인코딩 용 배열에 저장하는 방법은 무엇입니까?

if (isset($_POST["test"])) { 

$html1 = $object->htmlmarkup1(); 
$html2 = $object->htmlmarkup2(); 
$json = array("html1" => $html1, "html2" => $html2); 

die(json_encode($json)); 
} 

기능은 "테스트"POST 데이터에서 일부 계산에 따라 HTML 태그를 에코. 이 함수는 다른 곳에서이 함수를 사용하고 있기 때문에 함수 대신 return을 사용합니다. 코드의 형식은 결과를 먼저 반환하는 대신 함수의 결과를 반향하는 것이 더 쉽습니다.

두 개의 배열 요소에 "test1"과 "test2"를 넣어 함수를 사용하지 않고 테스트 한 결과 json이 내 테스트 페이지에서 "test1"과 "test2"를 올바르게 디코드하고 표시합니다.

+0

가능한 중복 (http://stackoverflow.com/questions/778336/capturing-echo-into-a-variable는) – mario

답변

3

출력 버퍼링을 사용할 수 있습니다. 이렇게하면 출력을 클라이언트로 보내지 않고 버퍼에 저장 한 다음 다시 가져 오는 것이 가능합니다 (예 : 변수에 저장).

ob_start(), ob_get_clean() 및 기타 모든 관련 기능을 참조하십시오. [변수로 에코 캡처]의

// from now on, output is not sent to the client but saved in a buffer 
ob_start(); 
$object->htmlmarkup1(); 
// get the content of the buffer into $html1 and turn off output buffering 
$html1 = ob_get_clean(); 

ob_start(); 
$object->htmlmarkup2(); 
$html2 = ob_get_clean(); 

$json = array("html1" => $html1, "html2" => $html2); 
+0

좋은, 그것은 언어가 거의 항상 얼마나 재미 문제를 직접 해결하는 기능은 있지만 직접 문제가 발생할 때까지 사용하지 마십시오. 시간 제한 한 번이 대답을 받아 들일 것입니다. – user1166981

관련 문제