2014-02-22 4 views
-2

프로젝트에서 PHP를 사용하여 일부 데이터를 자바 스크립트에 전달 중입니다. 내 PHP에서 내가 가진 :json_encoded 객체가 javascript의 배열로 끝나는 이유는 무엇입니까?

<?php 
     $allprojects = $pages->find('projects')->children(); 
     $transfer = array(); 
     $i=0; 
     foreach ($allprojects as $p) { 
      $transfer[] = array(
       'i' => $i, 
       'title' => $p->title()->value, 
       'url' => $p->url(), 
       'thumb' => thumb($p->children()->first()->images()->first(), array('width'=>170)) 
      ); 
      $i++; 
     } 


    ?> 
    <script> 
    var projects = <?php print json_encode($transfer); ?> 
    </script> 

나는 다음이 projects 변수가 배열 인 사용하려고합니다. 예 :

projects instanceof Array == true 

나는 이것이 왜 그런지 혼란 스럽다. 누군가 상황을 밝힐 수 있습니까?

+2

당신은 배열을 정의 왜 배열인지 묻는거야? – PeeHaa

+0

나는 연관 배열이 객체와 비슷하기 때문에 그가 의미하는 것 같아요. 자바 스크립트 배열도 숫자가 아닌 키를 가질 수 있다는 사실을 알지 못하는 많은 사람들이 있습니다. –

+0

@ BrettZamir 더 재미있는 것은 assoc 배열이 아니라는 것입니다 .-) – PeeHaa

답변

2

JSON은 개체 또는 개체 목록을 문자열로 표시하기위한 데이터 교환 형식입니다. 귀하의 경우에는 귀하의 목록 (특히 배열) $transfer[]을 서버 쪽에서 실행중인 PHP에서 클라이언트 쪽의 자바 스크립트로 교환하는 형식을 사용하고 있습니다. 자바 스크립트에 관한 한 지금까지

var projects = [{i: 1, title: "Example", url: "www.example.com", thumb: "example.jpg" }]; 

:

var projects = <?php print json_encode($transfer); ?> 

로 렌더링 된, 예를 들면 : 당신은 당신이 broswer의 결과 HTML 소스를 볼 경우

당신은 선을 볼 것이다 이 행은 projects을 배열 ([] 사용)로 지정합니다 ({} 사용). 따라서 형식을 성공적으로 사용하여 시작한 객체 배열을 서버에서 클라이언트로 교환합니다. 다시 어떻게 든 서버에 전달하기 위해 아마도 위해, 다시 클라이언트 측에서 변수로의 JSON 형식을 얻고 싶은 경우에

, 당신은 사용할 수 있습니다

+0

매우 유용한 설명 @stovroz. 감사! – fraxture

관련 문제