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

yqhsw0fo  于 2023-01-19  发布在  PHP
关注(0)|答案(5)|浏览(124)

假设我有这个数组:

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

我想得到这个数组中最长的字符串的长度,在这个例子中最长的字符串是1234567890,它的长度是10。
不循环遍历数组并检查每个元素是否可行?

wljmcqd8

wljmcqd81#

尝试

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

5n0oy7gb2#

当然:

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

那里没有环路。- )

bvhaajcl

bvhaajcl3#

门票上的一点小优惠。我来这里也有类似的问题:通常您必须只输出数组中最长的字符串。
为此,您还可以使用顶部的解决方案,并将其扩展一点:

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

hvvq6cgz4#

循环遍历数组并使用strlen验证当前长度是否比前一个长度长..并将最长字符串的索引保存在变量中,以便以后在需要该索引时使用。
像这样的事...

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

9gm1akwq5#

这样你可以找到最短(或最长)的元素,但不能找到它的索引。

$shortest = array_reduce($array, function ($a, $b) {

    if ($a === null) {
        return $b;
    }

    return strlen($a) < strlen($b) ? $a : $b;
});

相关问题