假设我有这个数组:
$array[] = 'foo'; $array[] = 'apple'; $array[] = '1234567890;
我想得到这个数组中最长的字符串的长度,在这个例子中最长的字符串是1234567890,它的长度是10。不循环遍历数组并检查每个元素是否可行?
1234567890
wljmcqd81#
尝试
$maxlen = max(array_map('strlen', $ary));
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);
那里没有环路。- )
bvhaajcl3#
门票上的一点小优惠。我来这里也有类似的问题:通常您必须只输出数组中最长的字符串。为此,您还可以使用顶部的解决方案,并将其扩展一点:
$lengths = array_map('strlen', $ary); $longestString = $ary[array_search(max($lengths), $lengths)];
hvvq6cgz4#
循环遍历数组并使用strlen验证当前长度是否比前一个长度长..并将最长字符串的索引保存在变量中,以便以后在需要该索引时使用。像这样的事...
strlen
$longest = 0; for($i = 0; $i < count($array); $i++) { if($i > 0) { if(strlen($array[$i]) > strlen($array[$longest])) { $longest = $i; } } }
9gm1akwq5#
这样你可以找到最短(或最长)的元素,但不能找到它的索引。
$shortest = array_reduce($array, function ($a, $b) { if ($a === null) { return $b; } return strlen($a) < strlen($b) ? $a : $b; });
5条答案
按热度按时间wljmcqd81#
尝试
5n0oy7gb2#
当然:
那里没有环路。- )
bvhaajcl3#
门票上的一点小优惠。我来这里也有类似的问题:通常您必须只输出数组中最长的字符串。
为此,您还可以使用顶部的解决方案,并将其扩展一点:
hvvq6cgz4#
循环遍历数组并使用
strlen
验证当前长度是否比前一个长度长..并将最长字符串的索引保存在变量中,以便以后在需要该索引时使用。像这样的事...
9gm1akwq5#
这样你可以找到最短(或最长)的元素,但不能找到它的索引。