【问题标题】:Get the most listed values from all JSONs从所有 JSON 中获取最多列出的值
【发布时间】:2019-10-08 22:07:02
【问题描述】:

我有多个 JSON 字符串,它们存储在我的数据库中。

这里有 3 个例子来说明它们的外观:

示例 1

{
    "request": {
        "city": "Chicago",
        "country": "USA",
        "gender": "m"
    }
}

示例 2

{
    "request": {
        "city": "Chicago",
        "country": "USA",
        "gender": "f",
        "role": "admin"
    }
}

示例 3

{
    "request": {
        "city": "Paris",
        "country": "France",
        "gender": "m",
        "language": "French",
        "role": "admin"
    }
}

我想比较所有 JSON 并创建一个具有列出最多的值的新 JSON。结果应该是这样的:

结果

{
    "request": {
        "city": "Chicago",
        "country": "USA",
        "gender": "m",
        "role": "admin"
    }
}

为什么?

因为我们有 3 个 JSONS 和

  • Chicago 出现了 2 次​​li>
  • USA 出现了 2 次​​li>
  • m 出现了 2 次​​li>
  • admin 出现了 2 次​​li>

如何获得我需要的 JSON?

PS:我不需要完成的代码。如果有人能解释我如何做到这一点就足够了。

【问题讨论】:

  • 这不是平均数,这是最大值。您想要出现次数最多/最多的项目。
  • @NawedKhan 哦,对不起,你是对的!应在新 JSON 中创建列出最多的值。
  • HOW

标签: php json


【解决方案1】:

我会为每个 JSON 键(角色、性别、城市...)创建一个数组

然后,当我解析 JSON 时,我会将值添加到特定数组中。

最后只计算数组中最常用的值并输出该值。

$city = ["Chicago", "Los Angeles", "Florida", "Los Angeles", "Chicago", "Chicago", "Los Angeles", "Los Angeles"];

$count = array_count_values($city);

arsort($count); 

$mostUsedCity = key($count); 

echo $mostUsedCity;

输出:洛杉矶

【讨论】:

  • 感谢您的回答。所以这意味着我必须先为所有列创建数组?
  • 是的,正确。这将是我接近它的方式。一个包含城市、国家、性别...的数组,最后为每个数组获取最常用的值并从中创建一个新的 JSON。将是为此创建函数的好方法。
  • 好吧,这听起来是个好方法。太好了,谢谢你的帮助!
  • @RezaSaadati 没问题,如果我看到另一种方法来解决这个问题,我会考虑的
猜你喜欢
  • 2020-11-03
  • 2023-03-05
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多