添加另一个关键的php数组json

时间:2018-04-10 07:54:01

标签: php

请更正我正在使用的术语。

我正在尝试返回这样的json数据:

"data": [
{
    "id": 1
    "name": "test"
},
{
{
    "id": 2
    "name": "abc"
},
{
    "id": 3
    "name": "zxc"
}
]

我的代码就是这个

$data = [];

foreach($prices as $price) {
    $data[]["id"] = $price->id;
    $data[]["name"] = $price->name;
}

$result["data"] = $data;

代码返回json,如下所示:

"data": [
{
    "id": 1
},
{
    "name": "test"
}
{
    "id": 2
},
{
    "name": "abc"
}
{
    "id": 3
},
{
    "name": "zxc"
}
]

抱歉格式不正确。

6 个答案:

答案 0 :(得分:2)

喜欢这个

foreach($prices as $price) {
    $data[] = [
        "id"=> $price->id,
        "name" => $price->name
     ];
}

当您需要在数组中对它们进行分组,然后将该数组作为一个单元添加时,您将按顺序添加项目。

答案 1 :(得分:2)

$i = 0;
$data = [];

foreach($prices as  $price) {
  $data[$i]["id"] = $price->id;
  $data[$i]["name"] = $price->name;
  $i++;
}


$result["data"] = $data;

答案 2 :(得分:1)

问题是你不断追加到数组而不是追加到对象而然后追加到$data数组。

试试这个

$data = [];

foreach($prices as $price) {
    $topush = [];
    $topush["id"] = $price->id;
    $topush["name"] = $price->name;
    $data[] = $toReturn;
}

$result["data"] = $data;

或者更短的

$data = [];

foreach($prices as $price) {
    $data[] = ['id' => $price->id, 'name' => $price->name];
}

$result["data"] = $data;

答案 3 :(得分:1)

您要在输出中添加两个新元素,一个包含id的键/值,另一个包含name的键/值。你必须将两者都放在一个元素中:

$data[]["id"] = $price->id; // Add one element
$data[]["name"] = $price->name; // Add second element

// New
$data[] = ['id' => $price->id, 'name' => $price->name]; // Add both as one Element

答案 4 :(得分:0)

[]每次都会创建新索引。您必须指定要插入的索引:

$data = [];

foreach($prices as $i => $price) {
    $data[$i]["id"] = $price->id;
    $data[$i]["name"] = $price->name;
}

$result["data"] = $data;

答案 5 :(得分:0)

您继续将值分配给新密钥,您应该一次性分配您想要捆绑的数据。

$data = [];

foreach($prices as $price) {
    $data[] = [
        "id" => $price->id,
        "name" => $price->name;
    ]
}

$result["data"] = $data;