Pat*_*ick 5 php json multidimensional-array
我正在使用PHP创建一个非常大的多维数组。每个对象都包含名称,ID,ParentID和子级。子级是由更多相同格式的对象组成的数组。
命名每个对象的ID至关重要-这有助于我将每个对象放在正确的父对象下。(在下面的代码中,我使用101、102等)
但是,我遇到的问题是当我使用JSON返回数组时json_encode。每个“儿童”数组都将被打印为对象,而不是数组-如下面的JSON代码所示。
正如我在这里的另一个SO线程上所读到的那样,“它们是因为包含了字符串键而成为对象” –尽管它们是数字,但它们仍然是字符串。
{
"101": {
"ID": "101",
"ParentID": "0",
"Name": "Root One"
"Children": {
"102": {
"ID": "102",
"ParentID": "101",
"Name": "Child One"
},
"103": {
"ID": "103",
"ParentID": "101",
"Name": "Child Two",
"Children": {
"104": {
"ID": "104",
"ParentID": "103",
"Name": "Child Child One"
}
}
},
Run Code Online (Sandbox Code Playgroud)
有谁知道如何克服这个问题?
编辑: JSON应该看起来像这样(方括号很重要!):
[
{
"ID": "101",
"ParentID": "0",
"Name": "Root One",
"Children": [
{
"ID": "102",
"ParentID": "101",
"Name": "Child One",
"Children": [
Run Code Online (Sandbox Code Playgroud)
JSON数组没有显式索引,它只是一个有序列表。具有命名键的唯一JSON数据结构是一个对象。文字应该使这一点很明显:
["foo", "bar", "baz"]
Run Code Online (Sandbox Code Playgroud)
此数组没有命名索引,也没有添加任何规定。
PHP将列表和键值存储都压缩为一种array数据类型。JSON不会。
我现在有了一个快速且运行良好的可行解决方案。
首先,正如问题中的SO链接所写;
在 JSON 中,数组仅具有数字键,而对象具有字符串属性。包含数组键迫使整个外部结构必然成为一个对象。
在 JSON 中;大括号保存对象 ( {}),方括号保存数组 ( [])。
因此,使用字符串作为键将导致json_encode函数返回对象,而重置键将确保它创建数组。
因此,在返回 JSON 编码字符串之前,我运行一个函数来重置所有数组键。我在这个 SO 线程(重置多维数组中的数组键)上找到的代码特别有用!
| 归档时间: |
|
| 查看次数: |
21238 次 |
| 最近记录: |