Ответ 1
попробовать
$maxlen = max(array_map('strlen', $ary));
Скажем, у меня есть этот массив:
$array[] = 'foo';
$array[] = 'apple';
$array[] = '1234567890;
Я хочу получить длину самой длинной строки в этом массиве. В этом случае самая длинная строка 1234567890
и ее длина равна 10.
Возможно ли это, если цикл не проходит через массив и не проверяется каждый элемент?
попробовать
$maxlen = max(array_map('strlen', $ary));
Конечно:
function getmax($array, $cur, $curmax) {
return $cur >= count($array) ? $curmax :
getmax($array, $cur + 1, strlen($array[$cur]) > strlen($array[$curmax])
? $cur : $curmax);
}
$index_of_longest = getmax($my_array, 0, 0);
Нет петли.; -)
Прокрутите массивы и используйте strlen
, чтобы проверить, является ли текущая длина длиннее предыдущей.. и сохраните индекс самой длинной строки в переменной и используйте ее позже, где вам нужен этот индекс.
Что-то вроде этого..
$longest = 0;
for($i = 0; $i < count($array); $i++)
{
if($i > 0)
{
if(strlen($array[$i]) > strlen($array[$longest]))
{
$longest = $i;
}
}
}