Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将数组的json对象转换为php数组_Php_Arrays_Json - Fatal编程技术网

如何将数组的json对象转换为php数组

如何将数组的json对象转换为php数组,php,arrays,json,Php,Arrays,Json,我有一个json字符串,其中一个有一个对象,一个是json数组,另一个是我想先把json数组转换成php数组,然后把其他json对象转换成php变量。请告诉我怎么做。我有stdclass,但无法获得准确的数据 Json字符串 { "data": [ { "ques_name": "no", "ques_id": "1" }, { "ques_name": "yes", "ques_id": "2" }

我有一个json字符串,其中一个有一个对象,一个是json数组,另一个是我想先把json数组转换成php数组,然后把其他json对象转换成php变量。请告诉我怎么做。我有stdclass,但无法获得准确的数据

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的数组,其中as的大小应该是7

    $params=$_GET['params'];
    $arr=array();
    $decode=json_decode($params);
    $arr=$decode->data;
    print_r($arr);
json\u decode($array)
将json对象转换为数组。

编辑:
您可以尝试
json\u解码($array,true)。这样,返回的对象将转换为关联数组

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

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>';
}
}
$jsonData='';//将json对象放在这里
$arrayData=json_decode($jsonData,true);
如果(isset($arrayData['data']))
{
foreach($arrayData['data']作为$data)
{
回显'id='.$data['ques_id'].'name='.$data['ques_name'.];
}
}

有很多方法可以达到同样的效果,其中一些方法如下

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

您也可以尝试:

array=get\u object\u vars(jsonData)

根据:

返回范围中指定对象的已定义对象可访问非静态属性的关联数组。如果未为属性分配值,则将返回空值


我知道,但它给了我std classI的对象,我使用下面的代码来获得数组,但它给了我大小为14的数组,其中as大小应该是7@TarunSharma您在使用object访问时遇到了什么问题?@TarunSharma请检查我的edit2,并告诉我这是否是您所期望的。它仅使用print\r打印。如何访问第一个数组iContains id&name&save rhem in array这
print\r
到底给了你什么?
$array =  (array) json_decode($xml_variable);
$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;
}