PHP를 사용하여 JSON 배열을 만드는 방법은 무엇입니까?


답변:


154

쉬운 peasy 레몬 squeezy : http://www.php.net/manual/en/function.json-encode.php

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

andyrusterholz at g-m-a-i-l dot c-o-m위에서 언급 한 페이지에는 복잡한 중첩 배열을 처리 할 수 있는 게시물 이 있습니다 (귀하의 경우).


2
Dang, homie, 당신은 그 대답에 즉각적으로 답했습니다 =). 나는 쉬운 질문에 흥분했다 =)
Calvin Froedge

2
이 코드가있는 동안 while ($ row = mysql_fetch_assoc ($ query_insert)) {$ control = array ( 'regione'=> $ row [ "regione"], 'totale'=> $ row [ "prezzi"]); } print (json_encode (% control)); 그러나 retun { "regione": "Puglia", "totale": "5.15"} not [{..}, {..}]
Mimmo

2
레몬 참조에 1을 더하십시오. :-)
금지

나는 그렇게했지만 var_dumb 함수를 사용하여 얻는 응답은 다음과 같습니다. string (59)을 제거하려면 어떻게해야합니까? string (59) "[{"result ":"success "}, {"message ":"데이터 업데이트! "}]"
James Smith

115

다음 json_encode과 같이 PHP의 native를 사용하십시오 .

<?php
$arr = array(
    array(
        "region" => "valore",
        "price" => "valore2"
    ),
    array(
        "region" => "valore",
        "price" => "valore2"
    ),
    array(
        "region" => "valore",
        "price" => "valore2"
    )
);

echo json_encode($arr);
?>

업데이트 : 의견에 귀하의 질문에 대답합니다. 당신은 이것을 이렇게합니다 :

$named_array = array(
    "nome_array" => array(
        array(
            "foo" => "bar"
        ),
        array(
            "foo" => "baz"
        )
    )
);
echo json_encode($named_array);

2
실례지만 { "nome_array": [{ "foo": "bar"}, { "foo": "baz"}]}를 원하십니까?
Mimmo

41

단순 : (중첩 된) PHP 배열을 만들고 호출 json_encode하십시오. 숫자 형 배열은 JSON 목록 ( [])으로, 연관 배열 및 PHP 개체는 객체 ( {}) 로 변환됩니다 . 예:

$a = array(
        array('foo' => 'bar'),
        array('foo' => 'baz'));
$json = json_encode($a);

당신에게 제공합니다 :

[{"foo":"bar"},{"foo":"baz"}]

1
실례지만 { "nome_array": [{ "foo": "bar"}, { "foo": "baz"}]}를 원하십니까?
Mimmo

2
내 게시물을 다시 읽으십시오. 무언가를 JSON 객체로 번역하려면 PHP에서 키를 문자열로하는 연관 배열로 만드십시오. JSON 목록으로 변환하려면 암시 ​​적 정수 키가있는 일반 배열로 만드십시오. 각 배열 요소의 값은 차례로 배열이 될 수 있습니다.
tdammers

감사합니다.이 질문에도 대답했습니다.
Shawn Wernig

나는 그렇게했지만 var_dumb 함수를 사용하여 얻는 응답은 다음과 같습니다. string (59)을 제거하려면 어떻게해야합니까? string (59) "[{"result ":"success "}, {"message ":"데이터 업데이트! "}]"
James Smith

13

PHP에서 json을 만들 때마다 가야 할 가장 좋은 방법은 먼저 ASSOCIATIVE 배열의 값을 변환하는 것입니다.

그런 다음 단순히를 사용하여 인코딩하십시오 json_encode($associativeArray). PHP에서 json을 만드는 가장 좋은 방법이라고 생각합니다. PHP에서 sql 쿼리 결과 양식을 가져올 때마다 fetch_assoc함수를 사용하여 값을 얻었으므로 연관 배열을 반환합니다.

$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';

... 등

그 후.

json_encode($associativeArray);

3

또한 배열의 경우 짧은 주석을 사용할 수 있습니다.

$arr = [
    [
        "region" => "valore",
        "price" => "valore2"
    ],
    [
        "region" => "valore",
        "price" => "valore2"
    ],
    [
        "region" => "valore",
        "price" => "valore2"
    ]
];

echo json_encode($arr);

3

이것이 아래 @tdammers가 제공 한 솔루션의 도움으로 할 수있는 방법입니다. 다음 줄은 foreach 루프 안에 배치됩니다.

$array[] = array('power' => trim("Some value"), 'time' => "time here" );

그런 다음 json encode 함수로 배열을 인코딩하십시오.

json_encode(array('newvalue'=> $array), 200)

1

이 한 줄만 입력하면 json 배열이 제공됩니다.

echo json_encode($array);

일반적으로 json_encodeiOS 또는 Android 앱에서 데이터를 읽는 데 사용 합니다. 따라서 정확한 json 배열 이외의 다른 것을 반향하지 마십시오.


1
$json_data = '{ "Languages:" : [ "English", "Spanish" ] }';
$lang_data = json_decode($json_data);
var_dump($lang_data);

PHP에서 언어 노드에 새로운 언어를 어떻게 동적으로 추가 하시겠습니까? 감사.

0
<?php 

    $username=urldecode($_POST['log_user']);

    $user="select * from tbl_registration where member_id= '".$username."' ";
    $rsuser = $obj->select($user);
    if(count($rsuser)>0)
    {
        //   (Status if 2 then its expire)    (1= use) ( 0 = not use)

        $cheknew="select name,ldate,offer_photo  from tbl_offer where status=1 ";
        $rscheknew = $obj->selectjson($cheknew);

        if(count($rscheknew)>0)
        {

             $nik=json_encode($rscheknew);
            echo "{\"status\" : \"200\" ,\"responce\" : \"201\", \"message\" : \"Get Record\",\"feed\":".str_replace("<p>","",$nik). "}";
        }
        else
        {
            $row2="No Record Found";
            $nik1=json_encode($row2);
            echo "{\"status\" : \"202\",  \"responce\" : \"604\",\"message\" : \"No Record Found \",\"feed\":".str_replace("<p>","",$nik1). "}";
        }
    }
    else
    {
        $row2="Invlid User";
        $nik1=json_encode($row2);
        echo "{\"status\" : \"404\", \"responce\" : \"602\",\"message\" : \"Invlid User \",\"feed\":".str_replace("<p>","",$nik1). "}";
    }

 ?>

0

내 코드에 사용할 조잡하고 간단한 jsonOBJ 클래스를 만들었습니다. PHP는 JavaScript / Node do와 같은 json 함수를 포함하지 않습니다. 다르게 반복해야하지만 도움이 될 수 있습니다.

<?php

// define a JSON Object class
class jsonOBJ {
    private $_arr;
    private $_arrName;

    function __construct($arrName){
        $this->_arrName = $arrName;
        $this->_arr[$this->_arrName] = array();

    }

    function toArray(){return $this->_arr;}
    function toString(){return json_encode($this->_arr);}

    function push($newObjectElement){
        $this->_arr[$this->_arrName][] = $newObjectElement; // array[$key]=$val;
    }

    function add($key,$val){
        $this->_arr[$this->_arrName][] = array($key=>$val);
    }
}

// create an instance of the object
$jsonObj = new jsonOBJ("locations");

// add items using one of two methods
$jsonObj->push(json_decode("{\"location\":\"TestLoc1\"}",true)); // from a JSON String
$jsonObj->push(json_decode("{\"location\":\"TestLoc2\"}",true));

$jsonObj->add("location","TestLoc3"); // from key:val pairs

echo "<pre>" . print_r($jsonObj->toArray(),1) . "</pre>";
echo "<br />" . $jsonObj->toString();
?>

출력합니다 :

Array
(
    [locations] => Array
        (
            [0] => Array
                (
                    [location] => TestLoc1
                )

            [1] => Array
                (
                    [location] => TestLoc2
                )

            [2] => Array
                (
                    [location] => TestLoc3
                )

        )

)


{"locations":[{"location":"TestLoc1"},{"location":"TestLoc2"},{"location":"TestLoc3"}]}

반복하려면 일반 객체로 변환하십시오.

$myObj = $jsonObj->toArray();

그때:

foreach($myObj["locations"] as $locationObj){
    echo $locationObj["location"] ."<br />";
}

출력 :

TestLoc1
TestLoc2
TestLoc3

직접 접근 :

$location = $myObj["locations"][0]["location"];
$location = $myObj["locations"][1]["location"];

실용적인 예 :

// return a JSON Object (jsonOBJ) from the rows
    function ParseRowsAsJSONObject($arrName, $rowRS){
        $jsonArr = new jsonOBJ($arrName); // name of the json array

        $rows = mysqli_num_rows($rowRS);
        if($rows > 0){
            while($rows > 0){
                $rd = mysqli_fetch_assoc($rowRS);
                $jsonArr->push($rd);
                $rows--;
            }
            mysqli_free_result($rowRS);
        }
        return $jsonArr->toArray();
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.