将带有方括号的json转换为php数组


convert json with square brackets to php array

我正试图发现是什么php数组为您提供了这个json

{
  "sEcho": 67,
  "iTotalRecords": "4075",
  "iTotalDisplayRecords": "4075",
  "aaData": [
    [
      "215",
      "Manaus",
      "BRA",
      "Amazonas",
      "1255049"
    ],
    [
      "216",
      "Belém",
      "BRA",
      "Pará",
      "1186926"
    ],
    [
      "217",
      "Guarulhos",
      "BRA",
      "São Paulo",
      "1095874"
    ],
    [
      "218",
      "Goiânia",
      "BRA",
      "Goiás",
      "1056330"
    ],
    [
      "219",
      "Campinas",
      "BRA",
      "São Paulo",
      "950043"
    ],
    [
      "220",
      "São Gonçalo",
      "BRA",
      "Rio de Janeiro",
      "869254"
    ],
    [
      "221",
      "Nova Iguaçu",
      "BRA",
      "Rio de Janeiro",
      "862225"
    ],
    [
      "222",
      "São Luís",
      "BRA",
      "Maranhão",
      "837588"
    ],
    [
      "223",
      "Maceió",
      "BRA",
      "Alagoas",
      "786288"
    ],
    [
      "224",
      "Duque de Caxias",
      "BRA",
      "Rio de Janeiro",
      "746758"
    ]
  ]
}

我正在试用这个

$array = array(
    "foo" => "more foo",
    "st" => "bar",
    "ty" => "stuff",
    "multi" => array(
             "array" => "foo",
             "the" => "stuff"
         ),
         array(array(
             "array" => "foo",
             "the" => "stuff"
         )),
         array(array(
             "array" => "foo",
             "the" => "stuff"
         )),
         array(array(
             "array" => "foo",
             "the" => "stuff"
         ))
    );
echo "<pre>";
print_r(json_encode($array));
echo "</pre>";

但是我的json有一个花括号

{"foo":"更多foo","st":"bar","ty":"stuff","multi":{"array":"foo"、"the":"stoff"},"0":[{"array":"foo"、

如何更正数组以生成json?。

您有太多的深度数组,不应该指定键。在PHP数组中,如果您设置了一个字符串键并对其进行JSON编码,它将生成一个对象而不是数组。

$array = array(
    "foo" => "more foo",
    "st" => "bar",
    "ty" => "stuff",
    "multi" => array(
        array(
            '215',
            'Manaus',
            'BRA'
        ),
        array(
            '216',
            'Belém',
            'BRA'
        ),
        array(
            '217',
            'Guarulhos',
            'BRA'
        )
    )
);
echo json_encode($array);

输出:

{
    "foo": "more foo",
    "st": "bar",
    "ty": "stuff",
    "multi": [
        [
            "215",
            "Manaus",
            "BRA"
        ],
        [
            "216",
            "Belém",
            "BRA"
        ],
        [
            "217",
            "Guarulhos",
            "BRA"
        ]
    ]
}

使用数字索引!任何以字符串为键的东西都必须产生大括号,因为这是在javascript中拥有这些键的唯一方法。

json_encode(array("hello", "world")
["hello", "world"]

json数组索引必须是数字索引。任何非数字索引都将被转换为json对象。这就是为什么它被渲染成花括号的原因。

关于您最初的问题,以下PHP代码:header("内容类型:application/json");header("Access Control Allow Origin","*");header("Access Control Allow Methods:POST,OPTIONS");header("Access Control Allow Headers:Content Type");header("访问控制允许凭据:false");标题("访问控制最大年龄:60");

include "./inc/funclib.inc.php";
$array = array (
    "sEcho" =>  67,
    "iTotalRecords" => "4075",
    "iTotalDisplayRecords" => "4075",
    "aaData" => array (
        array ( "215", "Manaus", "BRA", "Amazonas", "1255049"),
        array ( "216", "Belem",  "BRA", "Para¡", "1186926"),
        array ( "217", "Guarulhos", "BRA", "Sao Paulo", "1095874")
    ));
echo jsonIndent(json_encode($array));

返回输出:

{
  "sEcho":67,
  "iTotalRecords":"4075",
  "iTotalDisplayRecords":"4075",
  "aaData":[
    [
      "215",
      "Manaus",
      "BRA",
      "Amazonas",
      "1255049"
    ],
    [
      "216",
      "Belem",
      "BRA",
      "Para'u00a1",
      "1186926"
    ],
    [
      "217",
      "Guarulhos",
      "BRA",
      "Sao Paulo",
      "1095874"
    ]
  ]
}

这看起来像你要找的。我希望这将有所帮助:-)

如果同时指定了键和值,则需要使用大括号,只需指定值。

$array = array(
    "foo" => "more foo",
    "st" => "bar",
    "ty" => "stuff",
    "multi" => array(
              "foo",
             "stuff"
         ),
         array(array(
              "foo",
             "stuff"
         )),
         array(array(
             "foo",
             "stuff"
         )),
         array(array(
              "foo",
             "stuff"
         ))
    );