我试图发现什么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”: “棒”, “TY”: “东西”, “多”:{ “阵列”: “foo” 的, “在”: “东西”}, “0”:[{ “阵列” : “foo” 的, “该”: “东西”}]中, “1”:[{ “阵列”: “foo” 的, “该”: “东西”}], “2”:[{ “阵列”:”富”, “该”: “东西”}]}
如何更正我的数组以生成json?。
答案 0 :(得分:3)
你有太多的深度数组,你不应该指定密钥。在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"
]
]
}
答案 1 :(得分:2)
使用数字索引!任何以字符串作为键的东西都必须产生花括号,因为这是在javascript中使用这些键的唯一方法。
json_encode(array("hello", "world")
["hello", "world"]
答案 2 :(得分:1)
json数组索引必须是数字。 任何非数字索引都将转换为json对象。 这就是为什么它被渲染成大括号。
关于您的初始问题,以下PHP代码: header(“Content-type:application / json”); header(“Access-Control-Allow-Origin”,“*”); header(“Access-Control-Allow-Methods:POST,OPTIONS”); header(“Access-Control-Allow-Headers:Content-Type”); header(“Access-Control-Allow-Credentials:false”); 标题(“Access-Control-Max-Age: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"
]
]
}
这看起来像你在寻找什么。 我希望这会有所帮助: - )
答案 3 :(得分:0)
你有大括号,因为你指定了键和值,你需要只指定值。
$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"
))
);