如何计算数组中的值?

时间:2019-03-30 21:34:57

标签: php arrays count

我现在在列表中有多个值,我想计算在此列表中出现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

2 个答案:

答案 0 :(得分:0)

您可以使用array_count_values($ array)从带有结果的另一个数组上获得所有值的计数。

示例:

$count = array_count_values( $array );

echo "$a comes " . $count[$a] . ' times' ;

如果您只想知道一个值,请执行if。

示例:

$count = array_count_values( $array );

if ( $a == 100 )
  echo "$a comes " . $count[$a] . ' times' ;

编辑:

更多说明:

这是您要计算值的数组。

$array = array(12,14,12,100,5,100);

然后使用array_count_values()在另一个数组上获取值。

$count = array_count_values( $array );

现在,您可以循环获取所有值。

foreach( $array as $a ){

  echo "$a comes " . $count[$a] . " times <br/>" ;

}

它将打印:

12 comes 2 times
14 comes 1 times
12 comes 2 times
100 comes 2 times
5 comes 1 times
100 comes 2 times

您可以将$ count [$ a]更改为$ count [100](循环外)以获取数组中100的时间。

echo "100 comes " . $count[100] . " times" ;

将打印

100 comes 2 times

您可以在此处获取更多信息。 https://www.php.net/manual/es/function.array-count-values.php

答案 1 :(得分:0)

您可以结合使用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 demo