【问题标题】:Building a Json array in PHP在 PHP 中构建 Json 数组
【发布时间】:2021-09-05 22:51:37
【问题描述】:

我正在尝试在 php 中构建一个 json 数组,但它是一个更复杂的数组。 关键是,我正在尝试为菜肴计算创建一个数据库,并且数组应该看起来像这样。

每道菜都有名称、基重、直径和高度。它也有半成品,其中包括单个产品及其重量。

比如有一种成品叫“蛋糕”,其基重750克,高8cm,直径8cm。现在这个蛋糕是由 3 种不同的半成品制成的,总共 750 克。:

  1. 面团(300 克)
  2. 糖霜(300 克)
  3. 装饰品。 (150 克)

现在每个半产品都有自己的单一产品来构建它

面团:300克。

  1. 面粉 100g
  2. 水 100 克
  3. 其他 100 克。

每半个产品以此类推。

我已经尝试过构建数组,但这对我来说似乎有点难,关于如何做到这一点有什么建议吗?谢谢!

编辑:我需要这样的东西

[
  {
    "Title": "Cake",
    "base_weight": 750,
    "base_height": 8,
    "base_diameter": 14,
    "half_products": [
      {
        "title": "Dough",
        "weight": 300,
        "ingredients": [
          {
            "title": "Flour",
            "Weight": 150
          },
          {
            "title": "Water",
            "Weight": 150
          }
        ]
      },
      {
        "title": "Icing",
        "weight": 300,
        "ingredients": [
          {
            "title": "Flour",
            "Weight": 150
          },
          {
            "title": "Water",
            "Weight": 150
          }
        ]
      },
      {
        "title": "Decorations",
        "weight": 150,
        "ingredients": [
          {
            "title": "Flowers",
            "Weight": 150
          }
        ]
      }
    ]
  }
]

【问题讨论】:

  • 似乎它可能是一个数组数组。目前还不清楚你被困在哪里 - 你有没有为此尝试过任何事情?此外,JSON 在这里很大程度上是无关紧要的——您在 PHP 变量中创建数据结构,然后在最后将其编码为 JSON。如果您可以向我们展示您想要最终得到的 JSON(假设您已经考虑过这一点?)那么对我们来说会更简单。
  • 那是我需要的东西pastebin.com/WTBxKjLg
  • 谢谢。是的,它只是一个数组数组。您是从现有数据结构开始(例如从数据库或其他东西),还是只想从头开始构建数组的示例(即使用硬编码数据,只是为了显示 PHP 结构)?
  • 由于我们正在制作一个计算器来轻松确定特定大小蛋糕所需的配料量,因此我们需要创建一个数据库,员工将能够在那里添加有关基本蛋糕的信息通过一个表格,因为它们都是不同的,所以会有不同数量的半成品和成分。但我认为一个硬编码的例子肯定会很好。
  • we will need to create a database and Employees will be able to add the information about the base cakes there through a form,...那么 JSON 从何而来?您是否打算将 JSON 从表单发送到 PHP?或者通过 API 以 JSON 格式从数据库中输出数据?还是别的什么?

标签: php json


【解决方案1】:

您可以对其使用递归树方法,然后您可以轻松地将其转换为 json。 Arnaud Le Blanc 在此之前对其进行了编码 https://stackoverflow.com/a/4844073/2528471

function buildTree($items) {
    $childs = array();

    foreach($items as &$item)
        $childs[(int)$item['parent_id']][] = &$item;

    foreach($items as &$item)
        if (isset($childs[$item['id']]))
            $item['childs'] = $childs[$item['id']];

    return $childs[0];
}
$tree = buildTree($items); // $items variable must store all data from your database table

您可以使用它,然后轻松使用标准的php方法。

json_encode($tree);

【讨论】:

    猜你喜欢
    • 2014-02-01
    • 1970-01-01
    • 2011-03-28
    • 2020-02-27
    • 2012-12-14
    • 2022-12-04
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    相关资源
    最近更新 更多