php - 如何计算和求和数组每一列中的出现次数?
问题描述
我想尝试计算以下数字列表中每个“数字列”的总出现次数。
8353
1619
6889
3850
7596
9594
2557
8838
6224
7075
我对第一个数字的预期结果是:
array (
8 => 2, // 1st and 8th number starts with 8
1 => 1, // 2nd number
6 => 2, // 3rd and 9th
3 => 1, // 4th
7 => 2, // 5th and 10th
9 => 1, // 6th
2 => 1, // 7th
)
我需要对所有收集到多维数组中的其他列(第 2 位、第 3 位、第 4 位)进行相同类型的计算。
到目前为止我所做的是这样的
while($rowny = mysqli_fetch_assoc($mulai)) {
$rowData[] = $rowny;
}
for($i=0; $i<100; $i++){
$hasil[] = $rowData[$i]['result'];
$pecah = str_split($hasil[$i],1);
$hitunga = array_count_values($pecah);
print_r($hitunga);echo "<br/>";
}
到目前为止,当我打印 时$hitunga
,它会显示这样的数组
Array ( [8] => 1 [3] => 2 [5] => 1 )
Array ( [1] => 2 [6] => 1 [9] => 1 )
Array ( [6] => 1 [8] => 2 [9] => 1 )
Array ( [3] => 1 [8] => 1 [5] => 1 [0] => 1 )
Array ( [7] => 1 [5] => 1 [9] => 1 [6] => 1 )
Array ( [9] => 2 [5] => 1 [4] => 1 )
Array ( [2] => 1 [5] => 2 [7] => 1 )
Array ( [8] => 3 [3] => 1 )
Array ( [6] => 1 [2] => 2 [4] => 1 )
Array ( [7] => 2 [0] => 1 [5] => 1 )
但这改变了数字的顺序,在某些情况下,后面的列中没有数字。我希望保留 4 列数字并获得每列中的总出现次数。
解决方案
- 将每个数字拆分为一个 4 元素数组。
(array_map('str_split', $numbers)
) - 转置新的多维结构,IOW——将列转换为行。
(array_map(null, ...#1)
) - 计算值。
(array_map('array_count_values', #2)
单线:
array_map('array_count_values', array_map(null, ...array_map('str_split', $numbers)))
代码:(演示)
var_export(
array_map(
'array_count_values',
array_map(
null,
...array_map(
'str_split',
$numbers
)
)
)
);
或者,如果您更喜欢语言结构,这可能更容易理解......
代码:(演示)
$result = [];
foreach ($numbers as $number) {
foreach (str_split($number) as $index => $digit) {
$result[$index][$digit] = ($result[$index][$digit] ?? 0) + 1;
}
}
var_export($result);
输出(来自两个片段):
array (
0 =>
array (
8 => 2,
1 => 1,
6 => 2,
3 => 1,
7 => 2,
9 => 1,
2 => 1,
),
1 =>
array (
3 => 1,
6 => 1,
8 => 3,
5 => 3,
2 => 1,
0 => 1,
),
2 =>
array (
5 => 3,
1 => 1,
8 => 1,
9 => 2,
3 => 1,
2 => 1,
7 => 1,
),
3 =>
array (
3 => 1,
9 => 2,
0 => 1,
6 => 1,
4 => 2,
7 => 1,
8 => 1,
5 => 1,
),
)
推荐阅读
- php - 如何从 php 更改“base” HEAD 标签?
- java - 如何从 Elastic Beanstalk 中的 Spring Boot 应用程序中获取客户端主机名和/或客户端 IP 地址?
- c# - TempData 删除数据
- typescript - 在量角器中自动化 E2E,删除一个事件后如何获取事件计数
- macos - 为什么 Fastscripts 可以使用此功能,但鸭嘴兽却不能
- python - 如何在matplotlib python中删除以前的散点图
- javascript - html 中的工具提示
- iis - 更改 sitecore 网站默认 URL 结构
- outlook - WebDAV 上发布的 Outlook 日历未在 Google 日历上更新?
- python - python的查找功能出现问题