Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用strlen确定循环中的最长值_Php_Loops - Fatal编程技术网

PHP使用strlen确定循环中的最长值

PHP使用strlen确定循环中的最长值,php,loops,Php,Loops,在PHP foreach循环中,我有一个人名循环。但是,在循环之外,我想确定循环中使用的最大长度。因此,循环中可能有6个名称,其中大多数名称的长度可能为6-8个字符,但其中一个名称的长度可能为12个字符。所以我想找出最大的金额 < P>作为更明显的变化,考虑功能实现: $longest = ''; foreach($names as $name) { if(strlen($name) > strlen($longest)) { $longest = $name;

在PHP foreach循环中,我有一个人名循环。但是,在循环之外,我想确定循环中使用的最大长度。因此,循环中可能有6个名称,其中大多数名称的长度可能为6-8个字符,但其中一个名称的长度可能为12个字符。所以我想找出最大的金额

< P>作为更明显的变化,考虑功能实现:

$longest = '';
foreach($names as $name) {
    if(strlen($name) > strlen($longest)) {
        $longest = $name;
    }
}
$longest = array_reduce($names, function($longest, $candidate) {
    return strlen($longest) >= strlen($candidate) ? $longest : $candidate;
});

你试过什么了吗?到目前为止你都做了什么,你在哪里遇到了麻烦?为什么每次在PHP
strlen()中执行
strlen($longest)
最有可能是
O(1)
。因此,开销是最小的(只是函数调用)。
$info = array();

$names = array("Name 1","Name 2","Name 3","This is the longest string","Name 4");

foreach($names as $key=>$value) {
    if(empty($info) || strlen($value) > $info[1]) {
        $info[0] = $key;
        $info[1] = strlen($value);
    }
}

echo 'The longest value is ', $names[$info[0]], ' which has ', $info[1], ' charachters and its array index is ', $info[0];