說我有此數組:如何獲得最長的字符串的長度在一個陣列
$array[] = 'foo';
$array[] = 'apple';
$array[] = '1234567890;
我想在此數組中最長的字符串的長度。在這種情況下最長的字符串是1234567890
並且其長度是10
這是可能的,而不通過陣列循環並檢查每個元件?
說我有此數組:如何獲得最長的字符串的長度在一個陣列
$array[] = 'foo';
$array[] = 'apple';
$array[] = '1234567890;
我想在此數組中最長的字符串的長度。在這種情況下最長的字符串是1234567890
並且其長度是10
這是可能的,而不通過陣列循環並檢查每個元件?
嘗試
$maxlen = max(array_map('strlen', $ary));
有沒有人告訴你你是個天才? – 2009-11-19 10:18:00
超級喜歡!!謝謝! – 2013-12-09 10:20:05
@ClickUpvote它被稱爲函數式編程,是的,它很漂亮。 – Tobia 2016-11-14 17:36:32
循環遍歷數組和使用strlen
來驗證當前長度長於以前的..並保存最長的字符串的索引一個變量,使用它後,你需要該指數。
事情是這樣的..
$longest = 0;
for($i = 0; $i < count($array); $i++)
{
if($i > 0)
{
if(strlen($array[$i]) > strlen($array[$longest]))
{
$longest = $i;
}
}
}
但問題清楚地表示「沒有循環遍歷數組並檢查每個元素?」 – pavium 2009-11-19 10:12:24
做這樣一個任務的基本機制仍然是「循環」,例如使用array_map()使其對用戶透明。 – ghostdog74 2009-11-19 10:16:27
如果你想從一個集合中獲得一個指定的項目,你將永遠必須遍歷該集合。以這種或那種方式。 ;) – Ben 2009-11-19 10:46:59
肯定的:
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);
無環路那裏。 ;-)
如果我們將我們正在使用的語言放在帖子的標題中,這將有所幫助。 – glyph 2013-05-08 15:30:19