如何计算二维表中数字的次数?
代码示例:
array (size=3)
0 =>
array (size=7)
0 => int 19
1 => int 17
2 => int 37
3 => int 3
4 => int 17
5 => int 11
6 => int 23
1 =>
array (size=7)
0 => int 16
1 => int 30
2 => int 16
3 => int 4
4 => int 24
5 => int 14
6 => int 15
2 =>
array (size=7)
0 => int 11
1 => int 41
2 => int 30
3 => int 11
4 => int 10
5 => int 18
6 => int 36
我正在尝试查找如何搜索表格中每个数字的次数。 这就是我得到的:
$arrayWeeknummer = array();
echo "<table>";
for ($i = 0; $i < 3; $i++)
{
echo "<tr>";
for($j = 0; $j < 7; $j++)
{
$arrayWeeknummer[$i][$j] = rand(1,42);
echo "<td>".$arrayWeeknummer[$i][$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
for($k = 0; $k < 42; $k++)
{
$aantal = 0;
$newArray[$k][0] = $k+1;
if(array_search($k+1, $arrayWeeknummer))
{
$newArray[$k][1] = $aantal++;
}
$newArray[$k][1] = $aantal;
}
不幸的是我在if(array_search)语句中做错了,因为它永远不会被调用。
答案 0 :(得分:1)
这应该适合你:
这里我只用2个foreach循环遍历所有元素,然后检查该值是否已经在我的$result
数组中,如果不是,我用0初始化它,然后每次在数组中递增它。
<?php
$result = [];
foreach($arr as $a){
foreach($a as $v){
if(!isset($result[$v]))
$result[$v] = 0;
$result[$v]++;
}
}
print_r($result);
?>
或者如果你想使用array_walk_recursive()
,就这样做:
$result = [];
array_walk_recursive($arr, function($v, $k)use(&$result){
if(!isset($result[$v]))
$result[$v] = 0;
$result[$v]++;
});
答案 1 :(得分:0)
我要做的是使用1到42之间的键创建一个数组,并将值初始化为0.然后只需将for
循环运行到另一个for
循环中以查找您的每个值数组,只需将对应于数组中值的值从1增加到42。
编辑:似乎array_count_values()
执行相同的操作
答案 2 :(得分:0)
<?php
$input = [
[
0 => 19,
1 => 17,
2 => 37,
3 => 3,
4 => 17,
5 => 11,
6 => 23],
[
0 => 45,
1 => 1,
2 => 17,
3 => 34,
4 => 18,
5 => 19,
6 => 26],
];
$max = 0;
foreach($input as $array) {
$max = max(max($array), $max);
}
$result = array_fill (0, $max, 0);
foreach($input as $array) {
foreach($array as $number) {
$result[$number]++;
}
}
print_r($result);