我有一个这样的数组
$chunk = 4;
$arr = array('1', '1', '1', '1', '1', '1', '1', '0', '1', '0', '1', '0', '0', '0', '0', '1');
我根据$chunk
将这个数组修改为行和列,在这个例子中,它是4x4行和列。
我想做的是如何计算每列中有多少个"1"或"0",并打印"1"或"0"的最大输出。
示例:
1110
1101
1110
1001
there are 4 number '1' in first column, so the output should be 4
我的当前代码:
function array_chunk_vertical($arr, $percolnum){
$n = count($arr);
$mod = $n % $percolnum;
$cols = floor($n / $percolnum);
$mod ? $cols++ : null ;
$re = array();
for($col = 0; $col < $cols; $col++){
for($row = 0; $row < $percolnum; $row++){
if($arr){
$re[$row][] = array_shift($arr);
}
}
}
return $re;
}
$result = array_chunk_vertical($arr, $chunk);
$new = 0;
$exist = 0;
foreach($result as $row){
foreach($row as $val){
if($val == "1"){
$new++;
}
else{
$exist++;
}
echo $val;
}
echo '<br/>';
}
4条答案
按热度按时间wnavrhmk1#
非常短的代码片段,以帮助您的结果。
在上面的代码中,array_column将从索引为0、1的所有数组中获取数据,依此类推。
array_filter将删除0值(默认性质)。
下面的输出包括所有第1个垂直计数。
Demo
3j86kqsm2#
7rtdyuoh3#
我更新了chunk方法,使其简单一些,然后根据这个结果,我使用
array_column()
和array_sum()
的组合来加总每列的总数,然后您可以使用max()
来查找最高值(代码中也有注解)...导致
pcrecxhr4#
通过修改最后一个foreach循环,可以对列
1
和0
进行计数,如下所示结果