如何将数组的 JSON 对象转换为 PHP 数组


how to convert json objects of array into the php array

>我有一个json字符串i,其中一个有一个json数组和另一个对象,我想首先json数组,然后转换为php数组,其他json对象转换为php变量。请告诉我该怎么做。我有标准类,但我无法获得准确的数据。

Json 字符串

{
    "data": [
    {
        "ques_name": "no",
        "ques_id": "1"
    }, {
        "ques_name": "yes",
        "ques_id": "2"
    }, {
        "ques_name": "no",
        "ques_id": "3"
    }, {
        "ques_name": "yes",
        "ques_id": "4"
    }, {
        "ques_name": "no",
        "ques_id": "5"
    }, {
        "ques_name": "yes",
        "ques_id": "6"
    }, {
        "ques_name": "no",
        "ques_id": "7"
    }
    ],
    "UserId": 163
}

使用以下代码来获取数组,但它给了我大小为 14 的数组,其中大小应该是 7

    $params=$_GET['params'];
    $arr=array();
    $decode=json_decode($params);
    $arr=$decode->data;
    print_r($arr);

>json_decode($array) 会将 JSON 对象转换为数组。

编辑:
你可以试试json_decode($array, true);。这样,返回的对象将被转换为关联数组。

Edit2:在编辑部分(json_decode($array, true);)中使用我的代码,我得到以下数组(对我来说似乎还可以):

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [ques_name] => no
                    [ques_id] => 1
                )
            [1] => Array
                (
                    [ques_name] => yes
                    [ques_id] => 2
                )
            [2] => Array
                (
                    [ques_name] => no
                    [ques_id] => 3
                )
            [3] => Array
                (
                    [ques_name] => yes
                    [ques_id] => 4
                )
            [4] => Array
                (
                    [ques_name] => no
                    [ques_id] => 5
                )
            [5] => Array
                (
                    [ques_name] => yes
                    [ques_id] => 6
                )
            [6] => Array
                (
                    [ques_name] => no
                    [ques_id] => 7
                )
        )
    [UserId] => 163
)

Edit3:对于您询问如何获取数组的 id/name 部分的问题,这里有一个小示例代码:

$jsonData= ''; // put here your json object
$arrayData = json_decode($jsonData, true);
if (isset($arrayData['data']))
{
foreach ($arrayData['data'] as $data)
{
echo 'id='.$data['ques_id'].', name='.$data['ques_name'].'<br>';
}
}
有很多

方法可以实现相同的目标,其中一些如下

$array =  (array) json_decode($xml_variable);

从 http://www.php.net/manual/en/language.types.array.php

$array = json_decode(json_encode($xml_varible), true);

function object_to_array(json_decode($xml_varible))
{
    if (is_array($data) || is_object($data))
    {
        $result = array();
        foreach ($data as $key => $value)
        {
            $result[$key] = object_to_array($value);
        }
        return $result;
    }
    return $data;
}

function object_to_array(json_decode($xml_varible)) 
{
if ((! is_array($data)) and (! is_object($data))) return 'xxx'; //$data;
$result = array();
$data = (array) $data;
foreach ($data as $key => $value) {
    if (is_object($value)) $value = (array) $value;
    if (is_array($value)) 
    $result[$key] = object_to_array($value);
    else
        $result[$key] = $value;
}
return $result;
}

您也可以尝试:

array = get_object_vars(jsonData)

根据 http://php.net/manual/en/function.get-object-vars.php:

返回作用域中指定对象的已定义对象可访问非静态属性的关联数组。如果尚未为属性赋值,则将返回该属性的 NULL 值。