2010-03-30 5 views
1

내 MVC 모델에서 작동하려면 다른 사람이 수행 한 코드를 변환해야합니다.은 PHP를 사용하는 유효한 json 배열입니다

이해할 수없는 EOD와 같은 일부 기능을 사용하고 있습니다. 여전히 수업에서 효과가 있습니까?

Primarely, 제 질문에 초점을 맞추고 있습니다.

오래된 코드는 PHP로 json_encode 함수를 사용하지만이처럼 할 것이

?> 
{ 
     "username": "<?php echo $_SESSION['username'];?>", 
     "items": [ 
      <?php echo $items;?> 
     ] 
} 

<?php 

처럼 직접 출력,하지만 난 그게 항목 부분

에게 적합한 확신 할 필요가 없습니다
header('Content-type: application/json'); 

$output = array("username"=> isset($_SESSION['username']) ? $_SESSION['username'] : "?", 
       "items"=>$items 
       ); 
$this->content = json_encode($output); 

$ 항목의 구성 방법에 대한 배경 정보입니다.

$_SESSION['chatHistory'][$_POST['to']] .= <<<EOD 
         { 
      "s": "1", 
      "f": "{$to}", 
      "m": "{$messagesan}" 
     }, 
EOD; 

그리고 그것은 내가이 정도로 다소 분명 희망이

$items = ''; 


if (!empty($_SESSION['openChatBoxes'])) { 
     foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) { 
      $items .= $this->chatBoxSession($chatbox); 
     } 
    } 

//The chatBoxSession() function takes an item from the $_SESSION['chatHistory'] array and returns it. 

처럼 $ 항목 변수에 넣어 : 항목은 다음과 같이 저장됩니다? php 매뉴얼은 어떤 경우에는 배열 출력을 얻지 못하지만 대신 객체를 얻는다 고 경고합니다. 따라서 EOD 구문을 사용하면 확실하지 않습니다.

나는 어떤 일이 그들이하고있는 일을하고 있고 올바른 결과를 내고 있다는 것을 알면 시간을 절약 할 수 있습니다.

감사, 리처드

+0

EOD는 HEREDOC (또는 NOWDOC) 구문이 아닙니까? – alex

+0

그와 비슷한 것이지만, 실제로 그런 것은 아닙니다. PHP 매뉴얼 페이지 – Rich

답변

1

이는 히어 닥이라고합니다. 내부의 모든 텍스트가 단일 문자열 인 것처럼 작동합니다. JSON을 생성하려는 경우에는 사용하지 마십시오. 대신 세미콜론에 도달 할 때까지 구문이 수행되지 않는다는 사실을 사용하십시오.

$somevar = { 
    "s": "1", 
    "f": "{$to}", 
    "m": "{$messagesan}" 
}; 
+0

을 읽어 주셔서 감사합니다. 마지막 쉼표를 lastclosing curl 뒤에 추가하면 잊었을 것입니다. 그러나 나는 또한 항목을 출력하는 올바른 방법을 사용하고 있습니다. json_encode는 직선 컬 [] 자체를 추가하거나 그렇게해야합니까? – Rich

+0

답변에 쓴 것은 하나의 개체입니다. 맞습니까? 그러나 ajax 함수는 항목 배열을 필요로합니다. 올바른지 "items"=> $ items 또는해야합니까? "items"=> array ($ items) ????? – Rich

+0

일반적으로 선형 배열과 연관 배열을 포함하는 구조체를 만들고 JSON으로 변환하기 위해'json_encode()'를 호출합니다. 'array()'를 호출 할 필요가 있는지 여부는 당신이 원하는 구조에 달려있다. –