2016-01-24 14 views
1

Я хочу проверить длину строки comment массив. Как только какой-либо из них равен или больше 4, я хочу повторить соответствующее значение, а затем остановится."break" не работает должным образом

Я догадался, что использование 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?

ответ

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; 
} 

С комбинированным эхом/перерывом:

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) { 
    // ... 
} 
Смежные вопросы