【问题标题】:Implementing strlen() in a loop在循环中实现 strlen()
【发布时间】:2014-08-05 11:36:51
【问题描述】:

我在这里有一个带有学生姓名的字符串 (leerlingen),我正在尝试在此处进行练习。 代码显示了完整字符串的长度。

接下来将使用循环来检查谁的名字最长,但是如何在循环中实现 strlen() 呢?

// change the string into an array using the explode() function
$sleerlingen = "Kevin,Maarten,Thomas,Mahamad,Dennis,Kim,Joey,Teun,Sven,Tony";

$namen = explode(" ", $sleerlingen);
echo $namen[0];

echo "<br><br>";

//determin the longest name by using a loop
// ask length
$arraylength = strlen($sleerlingen);
sleerlingen = $i;
for ($i = 1; $i <= 10; $i++) {
echo $i;
}

echo $arraylength;
?>

【问题讨论】:

  • 如果出现平局怎么办?接受的答案不适应这种非常真实的可能性。

标签: php string function loops for-loop


【解决方案1】:

您在explode 函数中使用了错误的分隔符,字符串中没有空格。

这应该可以(我没有尝试过)。在 foreach 循环中,您检查当前长度与最长的长度,如果当前较长,则将其保存为最长。

<?php
    $sleerlingen = "Kevin,Maarten,Thomas,Mahamad,Dennis,Kim,Joey,Teun,Sven,Tony";

    $names = explode(',', $sleerlingen);
    $longest;
    $longest_length = 0;

    foreach ($names as $item) {
        if (strlen($item) > $longest_length) {
            $longest_length = strlen($item);
            $longest = $item;
        }
    }

    echo 'Longest name: ' . $longest . ', ' . $longest_length .' chars.';
?>

【讨论】:

    【解决方案2】:

    您可以创建自定义排序函数来根据字符串长度对数组进行排序。然后就可以轻松取数组中的第一个键了。

    <?php
    $sleerlingen = "Kevin,Maarten,Thomas,Mahamad,Dennis,Kim,Joey,Teun,Sven,Tony";
    $namen = explode(",", $sleerlingen); // changed the space to comma, otherwise it won't create an array of the string.
    
    function sortByLength($a,$b){
        return strlen($b)-strlen($a);
    }
    
    usort($namen,'sortByLength');
    
    echo $namen[0];
    ?>
    

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 2012-10-20
      • 2012-08-01
      • 2010-12-16
      • 1970-01-01
      • 2014-02-15
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多