php - 如何计算数组内的值?
问题描述
我现在在一个列表中有多个值我想计算在这个列表中出现了多少次 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
解决方案
您可以使用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
)
)
推荐阅读
- javascript - 带有回调细节的 JS CustomEvent
- java - 为什么 arrayList.contains() 在这个用例中返回 false,而 System.out.print() 在控制台上写的相同?
- python - Visual Studio Code 中出现问题
- python - 如何就地获取数组中项目的出现次数
- python - “for”循环未正确循环
- javascript - 反应:用数组信息按列填充表格
- go - Sql.Open 全局连接的最佳方法
- java - Spring Boot 多数据源设置
- javascript - 在 javascript 中执行 asnyc 方法的传统方式
- python - 当模型具有相同的字段但不同的 help_text 时,在 django 中是否可以继承