簡體   English   中英

將 json 轉換為多維 PHP 數組

[英]Convert a json to multi-dimensional PHP array

我將以下 json 發送到我的 API 端點

{"key":"levels","value":"[{role_id:1, access_level_id:3}, {role_id:2, access_level_id:1}, {role_id:3, access_level_id:2}]","description" :""}

在后端,我將其作為 Laravel 請求接收,如下所示:

public function functionName(Request $request){
    $req=$request->all();
    Log::debug($req['value']);
    return;
}

它返回以下預期結果

數組 ('key' => 'levels', 'value' => '[{role_id:1, access_level_id:3}, {role_id:2, access_level_id:1}, {role_id:3, access_level_id:2}]', '描述' => NULL, )

但我還需要將“值”轉換為數組。 這樣我就可以擁有一個多維的 PHP 數組。 所以我希望得到類似的東西

數組 ('key' => 'levels', 'value' => array( array('role_id'=>1, 'access_level_id'=>3), array('role_id'=>2, 'access_level_id'=>1 ), array('role_id'=>3, 'access_level_id'=>2) ) 'description' => NULL, )

但是在我的 Laravel 方法中,我執行以下操作:

public function share_doc(Request $request){
        $req=$request->all();
        Log::debug(json_decode($req['value'],true));
        return;
    }

試圖將作為“值”接收到的 json 轉換為 PHP 數組,它不返回任何內容 - 即沒有值,沒有數組,沒有字符串。 根本不值一提。

所以,我在這里的困難是如何將作為“值”從請求中接收到的整個 json 字符串轉換為 PHP 數組,以便我可以使用 PHP 遍歷這些項目

感謝您的幫助

您的問題是value元素不是有效的 JSON,因為鍵沒有被引用。 對於您提供的示例數據,您可以使用preg_replace修復它,然后json_decode更改的值:

$x['value'] = json_decode(preg_replace('/(\w+)(?=:)/', '"$1"', $x['value']), true);
print_r($x);

輸出:

Array
(
    [key] => levels
    [value] => Array
        (
            [0] => Array
                (
                    [role_id] => 1
                    [access_level_id] => 3
                )
            [1] => Array
                (
                    [role_id] => 2
                    [access_level_id] => 1
                )
            [2] => Array
                (
                    [role_id] => 3
                    [access_level_id] => 2
                )
        )
    [description] => 
)

3v4l.org 上的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM