10

我的 MySQL DB 有一个结果,我在 PHP 中进行了 json 编码,结果如下所示:

[
    {
        "id": "8488",
        "name": "Tenby",
        "area": "Area1"
    },
    {
        "id": "8489",
        "name": "Harbour",
        "area": "Area1"
    },
    {
        "id": "8490",
        "name": "Mobius",
        "area": "Area1"
    }
] 

我想做的是向该 JSON 添加一个新的键/值对,以便它:

[
    {
        "id": "8488",
        "name": "Tenby",
        "area": "Area1",
        "image": "1278.jpg"
    },
    {
        "id": "8489",
        "name": "Harbour",
        "area": "Area1",
        "image": "1279.jpg"
    },
    {
        "id": "8490",
        "name": "Mobius",
        "area": "Area1",
        "image": "1280.jpg"
    }
]

那么我怎样才能在 PHP 中做到这一点呢?

4

5 回答 5

15
<?php

$data[0]['id']="8488";
$data[0]['name']="Tenby";
$data[0]['area']="Area1";

$data[1]['id']="8489";
$data[1]['name']="Harbour";
$data[1]['area']="Area1";

$data[2]['id']="8490";
$data[2]['name']="Mobius";
$data[2]['area']="Area1";

echo json_encode($data)."<br/>";

/*Add Image element (or whatever) into the array according to your needs*/

$data[0]['image']="1278.jpg";
$data[1]['image']="1279.jpg";
$data[2]['image']="1280.jpg";

echo json_encode($data);

?>
于 2013-10-18T10:32:55.070 回答
3

PHP 对 JSON 不是很好。最好从 JSON 转换为 Array 来执行此操作 - @egig 也建议这样做。

示例代码:

$temp = json_decode($json);
$temp[] = new data, whatever you want to add...;
$json = json_encode($temp);

希望这可以帮助。

于 2013-10-18T10:30:51.173 回答
2

哈?

db 查询的结果将是一个数组或一个对象...向该数据添加附加条目,仅在完成每个必要的数据操作后进行编码

替代品,但笨拙(可怕):

  • json_decode,添加东西,json_encode
  • 将您的附加数据构建为字符串,str_replace例如"area": "Area1"在您的 json 字符串中"area": "Area1", "image": "1278.jpg"

但实际上:像 json_encode 这样的输出格式只有在您确定将整个输出放在一起并发送出去时才应该完成

于 2013-10-18T10:25:45.167 回答
2

也许从那以后情况发生了变化,但我知道这将在当前阶段起作用:-

所以这里是 JSON 字符串:-

$strJSON = '[
  {
      "id": "8488",
      "name": "Tenby",
      "area": "Area1"
  },
  {
      "id": "8489",
      "name": "Harbour",
      "area": "Area1"
  },
  {
      "id": "8490",
      "name": "Mobius",
      "area": "Area1"
  }
]';

如果这仍然是一个字符串,那么我会将它转换为这样的对象:-

$json = json_decode( $strJSON );

现在它是对象格式,要添加我的“图像”键及其值,然后我将添加它们,如下所示:-

$json[0]->image = "1278.jpg";
$json[1]->image = "1279.jpg";
$json[2]->image = "1280.jpg";

那么如果我在上面的代码之后添加下面的代码: -

echo "<pre>";
print_r( $json );
echo "</pre>";

然后我们应该看到它在页面上输出,如下所示:-

Array
(
    [0] => stdClass Object
        (
            [id] => 8488
            [name] => Tenby
            [area] => Area1
            [image] => 1278.jpg
        )

    [1] => stdClass Object
        (
            [id] => 8489
            [name] => Harbour
            [area] => Area1
            [image] => 1279.jpg
        )

    [2] => stdClass Object
        (
            [id] => 8490
            [name] => Mobius
            [area] => Area1
            [image] => 1280.jpg
        )

)
于 2018-10-17T14:43:32.097 回答
1

//$index = 数组中的某个值;

for($i=0;$i<count($index);$i++){
            $data[$i]->key = $index[$i];
        }
print $data;
于 2018-11-17T19:28:28.900 回答