首页 > 解决方案 > 如何计算数组内的值?

问题描述

我现在在一个列表中有多个值我想计算在这个列表中出现了多少次 100(使用 PHP)。

我的 PHP 代码:

<table class="widefat" style="margin-top:50px;">

输出:

1      33,55,88,100,66,4
       45,45,58,49,49,4
       100,100,50,49,80,4


2      33,55,88,100,66,4
       45,45,58,49,49,4
       100,100,50,49,80,4


3      33,55,88,100,66,4
       45,45,58,49,49,4
       100,100,50,49,80,4

我希望输出是:

1      100 (1) Times
       100 (0) Times
       100 (2) Times


2      100 (1) Times
       100 (0) Times
       100 (2) Times

3      100 (1) Times
       100 (0) Times
       100 (2) Times

标签: phparrayscount

解决方案


您可以使用explodearray_maparray_filterarray_count_values的组合以逗号分隔值并保留值为 100 的值。

例如:

$items = [
    1 => [
        "33,55,88,100,66,4",
        "45,45,58,49,49,4",
        "100,100,50,49,80,4"
    ],
    2 => [
        "33,55,88,100,66,4",
        "45,45,58,49,49,4",
        "100,100,50,49,80,4"
    ],
    3 => [
        "33,55,88,100,66,4",
        "45,45,58,49,49,4",
        "100,100,50,49,80,4"
    ],
];

foreach ($items as &$item) {
    $item = array_map(function ($x) {
        $res = array_filter(array_count_values(
            explode(',', $x)
        ), function ($key) {
            return $key === 100;
        }, ARRAY_FILTER_USE_KEY);
        return sprintf("100 (%s) Times", count($res) === 1 ? $res[100] : 0);
    }, $item);
}

print_r($items);

结果

Array
(
    [1] => Array
        (
            [0] => 100 (1) Times
            [1] => 100 (0) Times
            [2] => 100 (2) Times
        )

    [2] => Array
        (
            [0] => 100 (1) Times
            [1] => 100 (0) Times
            [2] => 100 (2) Times
        )

    [3] => Array
        (
            [0] => 100 (1) Times
            [1] => 100 (0) Times
            [2] => 100 (2) Times
        )

)

php演示


推荐阅读