Obwohl in diesem Fall ist es, weil Sie nicht ratsam ist‘ ll zweimal das Array werden durchlaufen, können Sie auch array_reduce verwenden, um jedes Element gegen den Rest vergleichen wie folgt aus:.
<?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;
}
?>
Wenn Sie PHP 5.3.0+ können Sie die Vorteile von closures nehmen:
<?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";
?>
Wollen Sie nur die Stringlänge oder möchten Sie auch die Strings? – NullUserException
Ich denke beide sind nützlich –
Sie sollten die Länge/Wert-Verwirrung entfernt haben, indem Sie Strings anstelle dieser Zahlen verwenden. –