2009-11-19 15 views
24

मैं इस सरणी है कहते हैं:कैसे एक सरणी में सबसे लंबे समय स्ट्रिंग की लंबाई प्राप्त करने के लिए

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

मैं इस सरणी में सबसे लंबे समय तक स्ट्रिंग की लंबाई प्राप्त करना चाहते हैं। इस मामले में सबसे लंबी स्ट्रिंग 1234567890 है और इसकी लंबाई 10.

क्या यह सरणी के माध्यम से लूपिंग और प्रत्येक तत्व की जांच के बिना संभव है?

+0

यह मदद करेगा अगर हम उस भाषा को डाल दें जो हम पोस्ट के शीर्षक में काम कर रहे हैं। – glyph

उत्तर

92

सरणियों के माध्यम से

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

क्या कोई आपको बताता है कि आप एक प्रतिभाशाली हैं ??? –

+0

सुपरप्ले !! धन्यवाद! –

+0

@ClickUpvote इसे कार्यात्मक प्रोग्रामिंग कहा जाता है, और हाँ, यह सुंदर है। – Tobia

1

लूप कोशिश करते हैं और strlen का उपयोग करता है, तो वर्तमान लंबाई है सत्यापित करने के लिए लंबे समय तक पिछले की तुलना में .. और एक चर में सबसे लंबे समय तक स्ट्रिंग के सूचकांक बचाने के लिए और बाद में उसका उपयोग तुम कहाँ की जरूरत है वह सूचकांक

कुछ इस तरह ..

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

लेकिन प्रश्न स्पष्ट रूप से कहा "सरणी के माध्यम से लूपिंग और प्रत्येक तत्व की जांच के बिना?" – pavium

+1

ऐसे कार्य करने के मूल यांत्रिकी अभी भी "looping" है, array_map() का उपयोग करके उदाहरण के लिए बस इसे उपयोगकर्ता के लिए पारदर्शी बनाएं। – ghostdog74

+0

यदि आप किसी सेट से निर्दिष्ट आइटम प्राप्त करना चाहते हैं तो आपको हमेशा सेट को लूपथ्रू करना होगा। किसी न किसी प्रकार से। ;) – Ben

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

अस्वीकरण: मुझे समझ में आया कि प्रश्न में "कोई लूपिंग" भी "कोई रिकर्सन" नहीं है, लेकिन मैं इसका विरोध नहीं कर सका ... – Heinzi

+0

ग्रेट उत्तर: पी मैं आपको वोट दूंगा, क्या मैं अपनी वोट सीमा तक नहीं पहुंच पाया दिन के लिए... – Franz

संबंधित मुद्दे