当前位置: 首页 > 知识库问答 >
问题:

包含多个对象的json数组

洪胤
2023-03-14

我希望在每个数组中获取多个对象,但我的代码显示了单个对象的操作。下面是我的PHP代码,我如何添加另一个循环来获取多个对象

foreach($row as $row){
$keys = $row['Cat_name'];
$output[$keys] = [];  //Creating key 
array_push($output[$keys],$row);
}
echo json_encode($output);

这是显示单个物体的结果

{
"Dogs": [
    {
        "id": "127",
        "thumb_path": "/VideoWallpaper/other/other17.jpg",
        "likes": "59",
        "Downloads": "88",
        "Cat_name": "Dogs"
    }
],
"Others": [
    {
        "id": "127",
        "thumb_path": "/VideoWallpaper/other/other17.jpg",
        "likes": "59",
        "Downloads": "88",
        "Cat_name": "Others"
    }
]
}

共有1个答案

尚嘉庆
2023-03-14
$output[$keys] = [];  //Creating key

您每次都为$output[$keys]分配一个新的空数组,这意味着您在当前循环迭代中推入该数组的内容将在下一次迭代中被丢弃,而$keys再次具有相同的值。

您不需要显式初始化进一步的数组“维度”来将数据存储到其中。只需初始化$output=[] 作为循环前的空数组;然后,您可以通过简单的赋值在任何级别添加下面的任何内容,而不管该级别/路径/您想调用的任何内容是否已经存在-如果需要,PHP将创建它。

更换这两条线路

$output[$keys] = [];  //Creating key 
array_push($output[$keys],$row);

仅仅

$output[$keys][] = $row;

(为什么$keys以复数形式开始命名?这是一个单独的变量,而不是多个变量。而且“helper变量”实际上并不需要以开头-您可以用$output[$row['Cat_name']][]替换您拥有的整个循环体=$row;-如果您愿意;如果您更易于阅读带有helper变量的其他版本,也可以。)

还有一件事,

foreach($row as $row){

您应该避免对两种不同的东西使用相同的变量名称。它并不直接影响在这篇Foreach循环中发生的事情,但是它会改变循环之后row包含的内容,所以如果之后您仍然需要访问原始数据数组,您不应该在这里覆盖它。

 类似资料:
  • 我正在尝试用Python加载和解析一个JSON文件。但我无法加载文件: 收益率:

  • 我从accuweather获得了以下带有json的代码 我尝试通过Jackson将此对象解析为POJO 我有json中指定的所有模型,如、数组、,由组成(在json中命名为最小值和最大值)等,它们都有私有字段和公共构造函数、getter和setter。但是我没有一些字段,因为我想省略它们(Day、night、EpochDate、Source)。 当我运行程序时,我得到了错误 com.fasterx

  • 问题内容: 我使用 PostgreSQL 9.5 和Rails5。我想查询下面显示的包含JSON对象数组的列,以返回包含并执行计数的所有JSON数组元素。我使用 的 SQL 显示在json数据下方。运行查询只会返回一个空数组。 这是我的数据: 我想要其中一个sql查询返回: 和另一个查询以返回数组,以便我可以在应用程序中对其调用count,还可以遍历它以创建表单: 我试过这个SQL查询: 我也试过

  • 我使用PostgreSQL 9.5和Rails 5。我想查询下面显示的包含JSON对象数组的jsonb列,以返回包含的所有JSON数组元素,并执行计数 我使用的SQL显示在json数据下面。运行查询只返回一个空数组。 我尝试了这里和这里建议的查询。 这就是我的jsonb数据的样子: 我希望其中一个sql查询返回: 和另一个返回数组的查询,以便我可以在我的应用程序中调用count并循环使用它来创建表

  • 问题内容: 我需要一些有关将包含多维数组的JSON对象转换为类的帮助。我试图反序列化json对象,但失败了。JsonMaclar类对象为null。请帮忙。 脚本代码; C#代码; 问题答案: 我建议您使用JSON.NET。它是一个开放源代码库,用于将c#对象序列化和反序列化为json,将Json对象序列化为.net对象… 序列化示例: Json.NET 4.5版本8 –多维数组支持,Unicode

  • 问题内容: 好的,所以我试图从我用来学习Java的书中进行练习。这是我到目前为止的代码: 以下是确切措词的练习: 修改类Calculator.java,以将所有数字按钮保留在声明为10个元素的数组中,如下所示: 替换从10开始的行 带有创建按钮并将其存储在此数组中的循环。 好的,所以我尝试使用声明数组,但这给了我错误: 这行有多个标记- 按钮无法解析为类型- 按钮无法解析为类型 相反,我尝试了这个