如何获取数组中最长字符串的长度

时间:2009-11-19 10:03:32

标签: php arrays

说我有这个数组:

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

我想得到这个数组中最长字符串的长度。在这种情况下,最长的字符串是1234567890,其长度是10。

这是否可以不通过数组循环并检查每个元素?

4 个答案:

答案 0 :(得分:104)

$maxlen = max(array_map('strlen', $ary));

答案 1 :(得分:4)

不确定

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

那里没有循环。 ; - )

答案 2 :(得分:1)

循环遍历数组并使用strlen验证当前长度是否比前一个更长..并保存变量中最长字符串的索引,并在稍后需要该索引的位置使用它。

像这样......

$longest = 0;
for($i = 0; $i < count($array); $i++)
{
  if($i > 0)
  {
    if(strlen($array[$i]) > strlen($array[$longest]))
    {
      $longest = $i;
    }
  }
}

答案 3 :(得分:1)

门票的一小部分。我带着类似的问题来到这里:通常你必须输出数组中最长的字符串。

为此,您也可以使用顶级解决方案并稍微扩展一下:

$lengths       = array_map('strlen', $ary);
$longestString = $ary[array_search(max($lengths), $lengths)];