'[PHP] json 사용법'에 해당되는 글 1건

  1. 2012.06.14 [PHP] json 사용법
분류없음2012.06.14 23:35
  

사용법은 크게 json_encode(값), json_decode(값) 으로 사용된다.

 

php 페이지에서 php 페이지로 값을 넘길 때 사용하는법을 알아보겠다.

 

1. 반복문에 배열로 값을 넣는다.

for(){

  $str[] = array('code'=>$bbs_no,'table'=>$table_type);

}

 

 code[0] table[0] 
 code[1] table[1]

이렇게 넣을 것이다.

 

 

2. array값을 파라미터로 넘길 수 없으므로 값으로 바꾼다.

$jsonStr = json_encode($str);

 

3. $jsonStr 값을 히든값으로 넣는다.

주의할점은 따음표로 묶지 않는다.

<input type="hidden" name="json_list" id="json_list" value=$jsonStr  />

 

 

폼을 전송한 후 받는쪽

$json_list = $_REQUEST['json_list'];

 

3. 역슬러쉬가 들어가므로 삭제해준다.

$json_list = str_replace('\\', '', $json_list);

 

4. json 배열로 만들어준다.

두번째 인자 true는 2개 이상의 배열로 되어있다는 것이다.
$json_list= json_decode($json_list, true);

 

출력

echo $json_list[0]['code'];

echo $json_list[1]['table'];

 

 

union으로 테이블을 중첩하여 글을 가져올 때 난감한 경우가 있다.

이럴때는 json으로 앞뒤 배열코드를 삽입 후 파라미터로 계속 보내면서 가져오면 된다.

 

 // json배열을 이용해서 글 이전, 이후 알아내기

 for($cnt=0; $cnt<count($json_list); $cnt++){
  if($json_list[$cnt]['code']==비교할 값){

    // 이전글
   if($cnt > 0)
    $upArr = array('code'=>$json_list[$cnt-1]['code'], 'table'=>$json_list[$cnt-1]['table']);
    // 이후글

   if($cnt+1 < count($json_list))
    $downArr = array('code'=>$json_list[$cnt+1]['code'], 'table'=>$json_list[$cnt+1]['table']);
   break;
  }
 }

 

 

  // 이전글

  $code = $upArr['code'];
  $table = $upArr['table'];

 

 

  // 이후글

  $code = $downArr['code'];
  $table = $downArr['table'];



아래는 facebook 에서 갖고 온 json값을 위의 예제를 통해 파싱하는 과정이다
// Fetch the viewer's basic information

    $basic = $facebook->api('/me');
//    echo "<pre>";   
//    print_r($basic);
   
    $location = $basic['location'];
    $locationName=$location['name'];
   
    $work = $basic['work'];
    $employer=$work[0]['employer']['name'];
   
    $education = $basic['education'];
    $concentration=$education[0]['concentration'];
    $edumajor=$concentration[0]['name'];
   
    $school=$education[0]['school'];
    $schoolname=$school['name'];
   
//    print_r($schoolname);   
//    echo "</pre>";
   

Posted by 예배하는 프로그래머