为什么我无法格式化我的JSON对象?

时间:2015-06-26 11:06:48

标签: php arrays json

我正在尝试构造一个包含内部对象的json对象。

我正在尝试以下代码 - 其中$ids是包含一些ID的数组:

$result = array();

foreach ($ids as $value) {
    $tempArray = getCustomOptions($host, $dbUsername, $dbPassword, $dbName, $_SESSION['companyId'], $value);
    array_push($result, $tempArray);
}
    print_r(json_encode($result));

getCustomOptions()也使用以下脚本返回数组:

$dataArray = [];
while ($stmt->fetch()) {
      $dataArray[] = array(
           'id' => $id,
           'description' => $description
      );
}

问题是当我print_r(json_encode($result));时,我得到以下结果:

[
    [
        {
            "id":21,
            "description":"Bshd"
        },
        {
            "id":22,
            "description":"Gandhi "
        },
        {
            "id":23,
            "description":"aaaa"
        },
        {
            "id":24,
            "description":"bbbbb"
        }
    ],
    [
        {
            "id":12,
            "description":"121"
        },
        {
            "id":13,
            "description":"qwe"
        },
        {
            "id":16,
            "description":"wD2"
        },
        {
            "id":17,
            "description":"we"
        }
    ],
    [
    ]
]

正如您所看到的,它返回了数组中的一些数组,但我真正需要的是以下结构:

{

    "data1":[
        {
            "id":21,
            "description":"Bshd"
        },
        {
            "id":22,
            "description":"Gandhi "
        },
        {
            "id":23,
            "description":"aaaa"
        },
        {
            "id":24,
            "description":"bbbbb"
        }
    ],
    "data2":[
        {
            "id":12,
            "description":"121"
        },
        {
            "id":13,
            "description":"qwe"
        },
        {
            "id":16,
            "description":"wD2"
        },
        {
            "id":17,
            "description":"we"
        }
    ]

}

我知道我在这里遗漏了一些非常小而基本的东西,但对我来说,php中的JSON操作仍然很难。

有人可以给我一些线索或推动吗?

2 个答案:

答案 0 :(得分:5)

您可以尝试使用以下代码以适当的格式生成数组。

$result = array();
$i=1;
foreach ($ids as $value) {  
    $tempArray = getCustomOptions($host, $dbUsername, $dbPassword, $dbName, $_SESSION['companyId'], $value);
    $result['data'.$i] = $tempArray;
    $i++;
}

答案 1 :(得分:0)

不要使用只创建普通数组元素的array_push()。使用$array_variable[$key] = ...将值分配给特定的关联数组键。