【问题标题】:how to convert json objects of array into the php array如何将数组的json对象转换为php数组
【发布时间】:2015-02-02 12:23:42
【问题描述】:

我有一个 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 的数组,其中大小应为 7

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

【问题讨论】:

  • print_r 到底给了你什么?

标签: php arrays json


【解决方案1】:

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>';
}
}

【讨论】:

  • 我知道,但它给了我 std 类的对象
  • 我使用以下代码获取数组,但它给了我大小为 14 的数组,其中大小应为 7
  • @TarunSharma 您在使用 object 访问它时遇到什么问题?
  • @TarunSharma 请检查我的编辑2并告诉我这是否是您所期望的
  • 它只用 print_r 打印我如何访问第一个包含 id 和名称的数组并将 rhem 保存在数组中
【解决方案2】:

有很多方法可以实现相同的,其中一些如下

$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;
}

【讨论】:

    【解决方案3】:

    你也可以试试:

    array = get_object_vars(jsonData)

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

    返回范围内指定对象的已定义对象可访问非静态属性的关联数组。如果一个属性没有被赋值,它将返回一个 NULL 值。

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多