Как получить длину самой длинной строки в массиве - PullRequest
30 голосов
/ 19 ноября 2009

Скажите, у меня есть этот массив:

$array[] = 'foo';
$array[] = 'apple';
$array[] = '1234567890;

Я хочу получить длину самой длинной строки в этом массиве. В этом случае самая длинная строка равна 1234567890, а ее длина равна 10.

Возможно ли это без обхода массива и проверки каждого элемента?

Ответы [ 3 ]

104 голосов
/ 19 ноября 2009

1001 * попробовать *

$maxlen = max(array_map('strlen', $ary));
4 голосов
/ 19 ноября 2009

Sure:

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);

Там нет петли. ; -)

1 голос
/ 19 ноября 2009

Переберите массивы и используйте strlen, чтобы проверить, больше ли текущая длина, чем предыдущая .. и сохранить индекс самой длинной строки в переменной и использовать его позже, где вам нужен этот индекс.

Как то так ..

$longest = 0;
for($i = 0; $i < count($array); $i++)
{
  if($i > 0)
  {
    if(strlen($array[$i]) > strlen($array[$longest]))
    {
      $longest = $i;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...