我想检查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
?
答案 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) {
// ...
}