PHP

 

배열 출력

 

php에서 JSON 배열을 출력하는 방법은 연관배열을 json_encode 함수의 파라메터로 전달하면 됩니다.

<?php

    header('Content-Type: application/json');

    $member1 = array("name" => "서태지", "height" => "173cm", "weight" => "55kg");

    $member2 = array("name" => "양현석", "height" => "180cm", "weight" => "70kg");

    $member3 = array("name" => "이주노", "height" => "172cm", "weight" => "53kg");

     

    // 3명의 정보를 memberData변수에 저장

    $memberData = array($member1, $member2, $member3);

     

    // 3명의 데이터가 JSON Array 문자열로 변환됨

    $output =  json_encode($memberData);



    // 출력

    echo  urldecode($output);

?>

 

 

코드를 실행한 출력 결과는 다음과 같습니다.

[
    {
        "name": "서태지",
        "height": "173cm",
        "weight": "55kg"
    },
    {
        "name": "양현석",
        "height": "180cm",
        "weight": "70kg"
    },
    {
        "name": "이주노",
        "height": "172cm",
        "weight": "53kg"
    }
]

여기서 한가지! JSON은 JavaScript Object Notation의 약자입니다. 번역하면 javascript 객체 표기법 정도인데 뜻 그대로 출력 형식으로 javascript 문법을 사용합니다. javascript 문법을 사용한다고 해서 javascript에서만 사용 가능한것이 아니라 표기법만 사용하는 것이므로 혼동하지 말아 주세요.

자세한 javascript 배열 정보는 http://www.w3schools.com/js/js_arrays.asp를 참고하세요.

참고로 phpcode에서 사용된 header('Content-Type: application/json')은 데이터가 JSON이라는 것을 명시합니다.

객체를 이용한 배열 + 데이터 출력

이번에는 JSON 배열과 함께 다른 값들도 함께 전달하는 코드 입니다.

<?php

    // 그룹에 대한 정보를 저장

    header('Content-Type: application/json');

    $groupData = array();

    $groupData["groupName"] = "서태지와 아이들";

    $groupData["debutYear"] = "1992";

    $groupData["memberCount"] = "3";



    // 첫 번째 코드와 동일

    $member1 = array("name" => "서태지", "height" => "173cm", "weight" => "55kg");

    $member2 = array("name" => "양현석", "height" => "180cm", "weight" => "70kg");

    $member3 = array("name" => "이주노", "height" => "172cm", "weight" => "53kg");

    $memberData = array($member1, $member2, $member3);

     

    // JSON Array를 연관 배열로 저장 키이름은 memberData

    $groupData["memberData"] = $memberData;



    // JSON Array가 포함된 Object를 문자열로 변환

    $output =  json_encode($groupData);



    // 출력

    echo  urldecode($output);

?>

 

출력 결과는 다음과 같습니다.

{
    "groupName": "서태지와 아이들",
    "debutYear": "1992",
    "memberCount": "3",
    "memberData": [
        {
            "name": "서태지",
            "height": "173cm",
            "weight": "55kg"
        },
        {
            "name": "양현석",
            "height": "180cm",
            "weight": "70kg"
        },
        {
            "name": "이주노",
            "height": "172cm",
            "weight": "53kg"
        }
    ]
}

출력된 형식은 javascript의 object 형식으로 필요한 데이터가 속성으로 표시되고 배열 역시 하나의 속성이 됩니다.

자세한 javascript의 object 관련 정보는 http://www.w3schools.com/js/js_objects.asp 링크를 참고하세요.

 

 

활용 

 

form

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 합쳐지고 최소화된 최신 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

<!-- 부가적인 테마 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">

<!-- 합쳐지고 최소화된 최신 자바스크립트 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>


</head>
<body>
<div class="row">
    <div class="col-xs-3 col-sm-3"></div>
    <div class="col-xs-8 col-sm-8">
        
        
      

<h1>&nbsp;</h1>
<form method="post"  action="test.php" name="form1">
<table class="table">
    <tr>
        <th>To</th>
        <td><input type="text" name="alim_to"   value="821012345678" class="form-control" ></td>  
         
    </tr>
     <tr>
         <th>Text</th>
        <td><textarea name="alim_text"  class="form-control" rows="15" cols="20">홍길동님, 안녕하세요. 슈어엠주식회사입니다.</textarea></td>   
    </tr>
    <tr>
         <th>From</th>
        <td><input type="text" name="alim_from"   value="07076380579"  class="form-control" ></td>   
    </tr>

    <tr>
        <th>code</th>
        <td><input type="text" name="alim_template_code"   value="completed_001"  class="form-control"></td>   
    </tr>
    <tr>
        <th>Time</th>
        <td><input type="text" name="alim_reserved_time"   value="209912310000"   class="form-control" ></td>   
    </tr>
    <tr>
        <th>Send</th>
        <td><input type="text" name="alim_re_send"      value="R"   class="form-control" ></td>   
    </tr>
    <tr>
         <th>Text</th>
        <td><input type="text" name="alim_re_text"      value="대체 메시지입니다." class="form-control"   ></td>   
    </tr>
    <tr>
        <td colspan="2" class="text-center"><input type="submit" value="전송"  class="btn btn-success"  /></td>
    </tr>                        
</table>


     
</form>

    
       

    </div>
</div>








</body>
</html>

 

 

test.php

<?
header("Content-Type: text/html; charset=UTF-8");
//header('Content-Type: application/json');

$usercode="1111";
$deptcode="2222";
$yellowid_key="3333";


//폼에 전송된 데이터를 받아 옵니다.
$alim_to=$_POST["alim_to"];
$alim_text=$_POST["alim_text"];
$alim_from=$_POST["alim_from"];
$alim_template_code=$_POST["alim_template_code"];
$alim_reserved_time=$_POST["alim_reserved_time"];
$alim_re_send=$_POST["alim_re_send"];
$alim_re_text=$_POST["alim_re_text"];


/*
{
    "usercode" : "1111",
    "deptcode" : "2222",
    "yellowid_key" : "3333",
    "messages" :
    [
        {
            "to" : "821012345678",
            "text" : "홍길동님, 안녕하세요. 슈어엠주식회사입니다.",
            "from" : "07076380579",
            "template_code" : "completed_001",
            "reserved_time" : "209912310000",
            "re_send" : "R",
            "re_text" : "대체 메시지입니다."
        }
    ]
}
 * 
 */


// json  Jsongroup 를 만듭니다.
$groupData=array();
$groupData["usercode"]=$usercode;
$groupData["deptcode"]=$deptcode;
$groupData["yellowid_key"]=$yellowid_key;


$messages=array(

            "to" => $alim_to,
            "text" => $alim_text,
            "from" => $alim_from,
            "template_code" =>$alim_template_code,
            "reserved_time" =>  $alim_reserved_time,
            "re_send" => $alim_re_send,
            "re_text" => $alim_re_text

);
//messages 객체가 배열에 [] 안에 포함되어 있으므로 $messagesData 를 만듭니다.
$messagesData =array($messages);

$groupData["messages"] = $messagesData;


    // JSON Array가 포함된 Object를 문자열로 변환
   // json_encode는 PHP의 데이터를 JSON 형식으로 전환해주는 PHP의 내장함수다.
    $output =  json_encode($groupData);

 
    
    $ch = curl_init('~~');                                                                      
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $output);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
        'Content-Type: application/json;charset=UTF-8',                                                                                
        'Content-Length: ' . strlen($output))                                                                       
    );                                                                                                                   
                                                                                                                         
    $result = curl_exec($ch);

    // 출력
   //전송된 Json  데이터 확인 
   //echo  urldecode($output);
   //  https://api.surem.com/alimtalk/v1/json 전송 후  받은 메시지
   var_dump($result);
   
?>





 

 

 

about author

PHRASE

Level 60  라이트

믿기만 하면 난 그것을 볼 수 있다. -로버트 슐러

댓글 ( 4)

댓글 남기기

작성