“休息”不能按预期工作

时间:2016-01-24 16:59:06

标签: php loops while-loop break

我想检查comment数组的字符串长度。 一旦它们中的任何一个等于或高于4,我想回显相关值,然后停止。

我猜测使用while应该是好的, 但如果我在4或更多时打破循环,则不会回显任何内容。 如果我将在5或更高时将其分解,则前两个4字符串值将被回显,但我只希望第一个4字符串值被回显,然后停止。

$comment[1] = "abc";  // add comment below text button
$comment[2] = "xyz";  // add comment below text button
$comment[3] = "abcd";  // add comment below text button
$comment[4] = "xyza";  // add comment below text button
$comment[5] = "abcde";  // add comment below text button
$comment[6] = "xyzab";  // add comment below text button

$x = 1;

while ($x <= 10) {

    if (strlen((string)$comment[$x]) >= 4 ) {

        echo $comment[$x];
        echo "<br/>";

    }

    $x = $x + 1;

    if (strlen((string)$comment[$x]) >= 4) break; // Nothing get echoed

 // if (strlen((string)$comment[$x]) >= 5) break; // two values get echoed

} 

另外,是否可能有更好/更短的练习来检查这个东西,也许有些内置函数如in_array

1 个答案:

答案 0 :(得分:2)

你的代码的问题在于你的循环体检查/打印一个元素并在不同的元素上打破,因为你在这两个点之间递增指针。你可以将break语句移动到增量之上,或者甚至将它放入if语句中(很像@ A-2-A建议)。然后它应该按预期工作。

突破增量:

while ($x <= 10) {

    if (strlen((string)$comment[$x]) >= 4 ) {

        echo $comment[$x];
        echo "<br/>";

    }
    if (strlen((string)$comment[$x]) >= 4) break; 

    $x = $x + 1;
} 

结合echo / break:

while ($x <= 10) {

    if (strlen((string)$comment[$x]) >= 4 ) {

        echo $comment[$x];
        echo "<br/>";
        break;

    }

    $x = $x + 1;
} 

此外,您可能希望将数组迭代到其长度而不是硬编码限制为10:

$x = 0;
$length = count($comment);

while ($x < $length) {
   // ... 
}