使用PHP将CSV条目与JSON文件进行比较

时间:2017-09-11 11:28:19

标签: php mysql json csv

我有一个名为refrigerator.csv的CSV文件,如下所示:

+---------------+---------+--------+------------+
| item          |  amount |  unit  |  use by    |
+---------------+---------+--------+------------+
| bread         | 10      | slices | 25/12/2017 |
+---------------+---------+--------+------------+
| cheese        | 10      | slices | 25/12/2017 |
+---------------+---------+--------+------------+
| butter        | 250     | grams  | 25/12/2017 |
+---------------+---------+--------+------------+
| peanut butter | 250     | grams  | 2/12/2017  |
+---------------+---------+--------+------------+
| mixed salad   | 500     | grams  | 26/12/2016 |
+---------------+---------+--------+------------+

和一个名为recipes.json的JSON文件,如下所示:

[
  {
    "name": "grilledcheeseontoast",
    "ingredients": [
      {
        "item": "bread",
        "amount": "2",
        "unit": "slices"
      },
      {
        "item": "cheese",
        "amount": "2",
        "unit": "slices"
      }
    ]
  },
  {
    "name": "saladsandwich",
    "ingredients": [
      {
        "item": "bread",
        "amount": "2",
        "unit": "slices"
      },
      {
        "item": "mixedsalad",
        "amount": "200",
        "unit": "grams"
      }
    ]
  },
  {
    "name": "peanutbuttersandwich",
    "ingredients": [
      {
        "item": "bread",
        "amount": "2",
        "unit": "slices"
      },
      {
        "item": "peanut butter",
        "amount": "250",
        "unit": "grams"
      }
    ]
  }
]

我的任务是使用php创建一个控制台应用程序,将这两个文件放在行参数中,并根据冰箱中的项目输出推荐的食谱。已过去使用日期的成分无法使用。关于如何做到这一点的任何指示? (我是PHP初学者)

1 个答案:

答案 0 :(得分:1)

首先使用过期日期过滤CSV文件中的所有内容(例如,当前日期大于CSV文件中列出的日期)。 PHP内置支持读取和写入CSV文件。 str_getcsv()就是其中之一。可以找到文档:http://php.net/manual/en/function.str-getcsv.php。您可以使用此函数逐个读取文件并将其转换为数组。这些评论也提供了一些有用的指示。

过滤后,使用内置文件读取函数读取JSON文件,例如: file_get_contents()http://php.net/manual/en/function.file-get-contents.php)。这将读取由filename参数指向的给定文件到字符串中。使用内置json_decode()http://php.net/manual/en/function.json-decode.php)函数将输入字符串转换为对象或关联数组。

将JSON文件转换为对象或数组后,您可以遍历已过滤的成分列表并检查配方数据中是否存在匹配项。你可以通过一遍又一遍地循环你的食谱数据来寻找直接的方法,直到找到匹配,或尝试使用和/或组合更多的内置函数来解决问题。

尝试将解决方案分解为更小的问题,并专注于解决这些问题。