हालांकि इस मामले में यह है क्योंकि आप उचित नहीं है ' सरणी दो बार traversing हो जाएगा, तो आप भी इस तरह array_reduce का उपयोग बाकी के खिलाफ प्रत्येक तत्व तुलना करने के लिए कर सकते हैं:।
<?php
$data = array('163','630','43','42','999','31');
//Will return the longest element that is nearest to the end of the array (999)
//That's why we use strlen() on the result.
$max_l = strlen(array_reduce($data,'maxlen'));
//Will return the shortest element that is nearest to the end of the array (31)
$min_l = strlen(array_reduce($data,'minlen'));
echo "The longest word is $max_l characters, while the shortest is $min_l\n";
function maxlen($k,$v) {
if (strlen($k) > strlen($v)) return $k;
return $v;
}
function minlen($k,$v) {
if ($k == '') return PHP_INT_MAX;
if (strlen($k) < strlen($v)) return $k;
return $v;
}
?>
आप कर रहे हैं तो आप कर सकते हैं
<?php
$max_l = strlen(array_reduce($data,
function ($k,$v) { return (strlen($k) > strlen($v)) ? $k : $v; }
));
$min_l = strlen(array_reduce($data,
function ($k,$v) {
if (!$k) return PHP_INT_MAX;
return (strlen($k) < strlen($v)) ? $k : $v;
}
));
echo "The longest word is $max_l characters, while the shortest is $min_l\n";
?>
स्रोत
2010-09-14 23:13:13
क्या आप सिर्फ स्ट्रिंग की लंबाई चाहते हैं या आप तार भी चाहते हैं? – NullUserException
मुझे लगता है कि दोनों उपयोगी हैं –
आपको इन नंबरों के बजाय तारों का उपयोग करके लंबाई/मूल्य भ्रम को हटा देना चाहिए था। –