我有一个数组$MyArray
,它有一些也是数组的元素(让我们称之为子数组)。我想知道具有最多元素的子阵列有多少元素。问题是,我不知道索引是否存在:
max(
@count($MyArray[$i*7]),
@count($MyArray[$i*7+1]),
@count($MyArray[$i*7+2]),
@count($MyArray[$i*7+3]),
@count($MyArray[$i*7+4]),
@count($MyArray[$i*7+5]),
@count($MyArray[$i*7+6])
);
$MyArray
:
Array(
12 => array (
0 => array ( 0 => 0, 1 => 1, ),
1 => array ( 0 => 13, 1 => 1, ),
2 => array ( 0 => 15, 1 => 1, ),
3 => array ( 0 => 20, 1 => 1, ),
4 => array ( 0 => 69, 1 => 1, )
),
5 => array (
0 => array ( 0 => 55, 1 => 1, ),
1 => array ( 0 => 32, 1 => 1, ),
2 => array ( 0 => 12, 1 => 1, ),
3 => array ( 0 => 21, 1 => 5, )
),
....
)
这可以做得更好(更快)吗?
编辑:我知道foreach
并且我不想遍历此数组中的每个元素。我只想要它的间隔。使用@
,因为我不知道$MyArray[$i*7 + x]
是Null
还是array
。
$i
是[0,1,2,3,4]的元素(有时也是5)
答案 0 :(得分:4)
$biggest = 0;
foreach ($MyArray as $value) {
if ($biggest < count($value)) {
$biggest = count($value);
}
}
我知道,你想要数组中最大数组的大小,对吗?
答案 1 :(得分:3)
简单和老派的方法:
<?php
$max = -1;
foreach($MyArray as $subarray)
{
$items = count($subarray);
if($items > $max)
$max = $items;
}
echo $max;
?>
这样做效果最好,因为您只想知道元素数量最多的子元素。
答案 2 :(得分:3)
$max = 0;
foreach ($MyArray as $value) {
$max = max($max,count($value));
}
答案 3 :(得分:2)
试试这个:
$arr = array();
for ($j=0;$j<=6;$j++) {
if (isset($MyArray[$i*7+$j])) $arr[] = count($MyArray[$i*7+$j]);
}
$result = max($arr);
我不确切地知道$i
指的是什么......
答案 4 :(得分:1)
// get the interesting part of the array
$chunk = array_intersect_key($input_array, array_flip(range($i*7, $i*7+6)));
// max(count)
$max = $chunk ? max(array_map('count', $chunk)) : 0;