【问题标题】:Count similar values in php array of array and add unique in a new array在数组的php数组中计算相似值并在新数组中添加唯一
【发布时间】:2020-03-05 05:50:55
【问题描述】:

我在 php 数组上遇到了一些算法问题。这是我在对多个日志文件执行 grep 并将其存储在数组中之后得到的一种示例。它可以更长,每个元素都是 grep 的结果,具体取决于文件夹中日志文件的数量。

(
    [0] => Array
        (
            [0] => : [POST] /api_v2/resources/new_service_indexes

            [1] => : [POST] /api_v2/resources/new_service_tree_categories

            [2] => : [POST] /api_v2/users/add_device

            [3] => : [POST] /api_v2/users/check_email

        )

    [1] => Array
        (
            [0] => : [GET] /api_v2/resources/categories

            [1] => : [POST] /api_v2/resources/new_service_indexes

            [2] => : [POST] /api_v2/resources/new_service_tree_categories

            [3] => : [POST] /api_v2/users/add_device

            [4] => : [POST] /api_v2/users/check_email

            [5] => : [POST] /api_v2/users/facebook_login

            [6] => : [POST] /api_v2/users/login

            [7] => : [POST] /api_v2/users/register


        )

    [2] => Array
        (
            [0] => : [POST] /api_v2/resources/new_service_indexes

            [1] => : [POST] /api_v2/resources/new_service_tree_categories

            [2] => : [POST] /api_v2/users/add_device

            [3] => : [POST] /api_v2/users/facebook_login

            [4] => : [POST] /api_v2/users/login

        )
)

我想在删除它们之前计算所有键的出现次数,并获得一个新数组,其中有唯一键和计数。示例:

        (
            [name] => : [GET] /api_v2/resources/categories
            [count] => : 2

            [name] => : [POST] /api_v2/resources/new_service_indexes
            [count] => : 3

            [name] => : [POST] /api_v2/resources/new_service_tree_categories
            [count] => : 5

            [name] => : [POST] /api_v2/users/add_device
            [count] => : 2 

            [name] => : [POST] /api_v2/users/check_email
            [count] => : 2

            [name] => : [POST] /api_v2/users/facebook_login
            [count] => : 6

            [name] => : [POST] /api_v2/users/login
            [count] => : 2

            [name] => : [POST] /api_v2/users/register
            [count] => : 2

        )

【问题讨论】:

  • 您想要的数组无法创建。 namecount 键只能出现一次。
  • [POST] /api_v2/resources/new_service_indexes 是一个字符串吗? (加:结果应该像 (name => count) 的地图,而不是您提到的数组!
  • 请展示您所做的尝试并描述结果以及它与您想要的结果有何不同。现在看起来你只是在要求我们为你做你的工作(即使情况可能并非如此)
  • 你放弃了吗???

标签: php arrays algorithm


【解决方案1】:

您可以展平数组并计算值:

$result = array_count_values(array_merge(...$array));

应该产生类似的东西:

Array (
            [ : [GET] /api_v2/resources/categories] => 2
            [ : [POST] /api_v2/resources/new_service_indexes] => 3
)

除非它也是二维的,否则您显示的结果数组是不可能的。为此:

foreach($result as $key => $val) {
    $new_result[] = ['name' => $key, 'count' => $val];
}

但是在执行grep 时合并数组可能会更容易,但是您没有显示该代码。您可以使用该代码提出另一个问题,以获得更好的数组格式或最终结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 2014-04-16
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多