***php解析JSON二維數組字符串(json_decode函數第二個參數True和False的區別)


客戶端的請求體中的數據:[{"msg_id": 1, "msg_status": "HAS_READ" }, { "msg_id": 2, "msg_status": "HAS_READ" }] 是一個二維數組字符串
$json_data = json_decode($GLOBALS['HTTP_RAW_POST_DATA'], true);
其實用這一句即可實現JSON二維數組字符串轉PHP的二維數組變量,不用自己動態構造二維數組
該函數的第二個參數很重要:不加true會以PHP對象輸出, 加true輸出PHP數組


   /**
     * 根據上傳的消息ID集合來批量更新消息的狀態
     */
    public function update_status_batch()
    {
        //需要更新的數據
/*        $data = array(
            array(
                'msg_id' => 1 ,
                'msg_status' => 'HAS_READ'
            ),
            array(
                'msg_id' => 2 ,
                'msg_status' => 'HAS_READ'
            )
        );*/

        //返回值默認是JSON對象,當第二個可選參數是TRUE的時候,則返回的是數組;如果是二維數組的JSON字符串,這里也會轉換為二維數組的PHP變量
        $json_data = json_decode($GLOBALS['HTTP_RAW_POST_DATA'], true);
/*        //元素個數
        //$item_num = count($json_data);
        //定義二維數組
        $array = array();
        foreach($json_data as $item){
            $array_unit = array(
                'msg_id' => $item->msg_id,
                'msg_status' => $item->msg_status
            );
            //往二維數組追加元素
            array_push($array,$array_unit);
        }*/

        //更新,返回值是更新所影響的記錄條數
        $result = $this->m_user_msg->update_batch($json_data, 'msg_id');
        if(!empty($result)){
            //如果不為空,就返回成功
            $return_data['code']= '100';
            $return_data['msg']= '處理成功';
            //需要進行字符串轉數字處理
            $return_data['data']= $result;

        }else{
            $return_data['code']= '400';
            $return_data['msg']= '處理失敗';
            $return_data['data']= $json_data;
        }

        //設置以JSON返回給請求方
        header('Content-Type:application/json; charset=utf-8');
        //轉換為JSON字符串
        echo  stripslashes(json_encode($return_data, JSON_UNESCAPED_UNICODE)) ;

    }

 

-------------------------------------------------------------------------------------------------------

json_decode函數第二個參數True和False的區別

默認值:false,返回object對象

Array
(
[0] => stdClass Object
(
[name] => C51790CC-EDEF-4DF7-9CC7-FE8F4DC8138B&ext=JPG
[width] => 200
[height] => 149
)

[1] => stdClass Object
(
[name] => 4E6A33AD-D9AE-47CD-9711-E95D9184FBC2&ext=JPG.jpg
[width] => 160
[height] => 160
)

)

為true的情況,返回數組array:

Array
(
[0] => Array
(
[name] => C51790CC-EDEF-4DF7-9CC7-FE8F4DC8138B&ext=JPG
[width] => 200
[height] => 149
)

[1] => Array
(
[name] => 4E6A33AD-D9AE-47CD-9711-E95D9184FBC2&ext=JPG.jpg
[width] => 160
[height] => 160
)

)

 

官方解釋:

json_decode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_decode — 對 JSON 格式的字符串進行編碼

說明

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

接受一個 JSON 格式的字符串並且把它轉換為 PHP 變量

參數

 

json

待解碼的 json string 格式的字符串。

This function only works with UTF-8 encoded data.

assoc

當該參數為 TRUE 時,將返回 array 而非 object 。

depth

User specified recursion depth.

options

Bitmask of JSON decode options. Currently only JSON_BIGINT_AS_STRING is supported (default is to cast large integers as floats)

返回值

Returns the value encoded in json in appropriate PHP type. Values truefalse and null (case-insensitive) are returned as TRUEFALSE andNULL respectively. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM