【问题标题】:Json array of objects in phpphp中的Json对象数组
【发布时间】:2011-12-24 06:41:21
【问题描述】:

这是我的代码生成的 json

{
"aaa":1,
"b":2,
"c":3,
"d":4,
"e":5,
"fff":{"a":11111,"b":222222,"c":33333,"d":444454,"e":55555555}
}

这是代码

<?php
$c = array('a' => 11111, 'b' => 222222, 'c' => 33333, 'd' => 444454, 'e' => 55555555 );
$arr = array('aaa' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5 , 'fff'=>$c);
echo json_encode($arr);
?>

但我想要一些这样的结构

{
"aaa":1,
"b":2,
"c":3,
"d":4,
"e":5,
"fff":{"a":11111,"b":222222,"c":33333,"d":444454,"e":55555555},
"last":[
      {
        "id": 8817,
        "loc": "NEW YORK CITY"
      },
      {
        "id": 2873,
        "loc": "UNITED STATES"
      },
      {
        "id": 1501,
        "loc": "NEW YORK STATE"
      }
    ]
}

我是 json 和 php 的新手,我需要这个速度,所以我没有时间阅读这个 json 结构......所以如果有人知道如何添加最后一个元素,请提供一些 php 代码。

谢谢,

【问题讨论】:

  • 嗯...只需将"last" 数组添加到您的$arr?

标签: php arrays json arraylist


【解决方案1】:
  • 获取“json-encoded”字符串并将其传递给 json_decode()
  • 将返回值赋给变量
  • 将该变量传递给 var_export() 以获得数据的“php 编码”字符串表示。

例如

<?php
$json = '{
"aaa":1,
"b":2,
"c":3,
"d":4,
"e":5,
"fff":{"a":11111,"b":222222,"c":33333,"d":444454,"e":55555555},
"last":[
      {
        "id": 8817,
        "loc": "NEW YORK CITY"
      },
      {
        "id": 2873,
        "loc": "UNITED STATES"
      },
      {
        "id": 1501,
        "loc": "NEW YORK STATE"
      }
    ]
}';


$php = json_decode($json, true);
echo var_export($php);

打印

array (
  'aaa' => 1,
  'b' => 2,
  'c' => 3,
  'd' => 4,
  'e' => 5,
  'fff' => 
  array (
    'a' => 11111,
    'b' => 222222,
    'c' => 33333,
    'd' => 444454,
    'e' => 55555555,
  ),
  'last' => 
  array (
    0 => 
    array (
      'id' => 8817,
      'loc' => 'NEW YORK CITY',
    ),
    1 => 
    array (
      'id' => 2873,
      'loc' => 'UNITED STATES',
    ),
    2 => 
    array (
      'id' => 1501,
      'loc' => 'NEW YORK STATE',
    ),
  ),
)

【讨论】:

  • 该死的,我正在手动编写生成的 php 代码!巧妙地使用 var_export :-) 为了让答案更清楚,一个没有数字键的数组被转换为一个对象(带有 {}),一个数字键数组被转换为一个数组(带有 [])。
  • 我不明白这如何回答 OP?
  • @Damien 一个带有 连续 数字键的数组。 array(1 =&gt; 'foo', 0 =&gt; 'bar') 也将被编码为一个对象(至少在某些 PHP 版本中,AFAIR)。
  • nickb,我假设 (wild-guessing-mode) 操作有一些 javascript 对象文字作为模板,并且想要一个一致的 php 模板。通过 json_decode/var_export 可以创建这样一个 php 模板。不是火箭科学,而是……
猜你喜欢
  • 2016-05-08
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
相关资源
最近更新 更多