我现在在列表中有多个值,我想计算在此列表中出现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
答案 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)
您可以结合使用explode,array_map,array_filter和array_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
)
)