PHP: IF语句单独工作,但不能在WHILE循环中工作


PHP: IF statement works on its own, but not inside WHILE loop

问题:

假设我在搜索框中输入$keyword =一个句子,例如"large white boxes"

我需要做的是将其分解成单独的单词,然后测试每个单词以确保a *不会出现在前3个字母中。(所以,sen*可以,但se*不可以)。如果一个*确实出现在任何单个单词的前3个字母中,那么" If ($keyword)…"进程需要结束。

if ($keyword)  {

            $token = strtok($keyword, " ");
                while ($token != false) {
                    echo $token;
                        if (stripos($token,"*") < 3 ) {
                        return;
                        }
                    $token = strtok(" ");
                    }

…代码仍然…

如您所见,我每次都回显以查看它的处理情况。

如果我去掉' If '代码,那么它将输出'largewhiteboxes'并按预期继续。

如果我让' If '代码保持原样,只输出'large',并结束例程-即使条件没有满足!

如果我自己运行' If '语句,在WHILE循环之外,它工作得很好,对前3个位置的a *响应为真,对其他所有位置响应为假…

我做错了什么??

stripos的文档中有一个巨大的红色警告,您应该注意。

也就是说,在检查返回值是否为< 3之前,需要先检查返回值是否为!== false

作为题外话,当explode(',', $keyword)可用时,为什么要麻烦strtok ?

这种变化似乎有效。

$keyword = "large white boxes";
$token = strtok($keyword, " ");
while ($token !== false) {
    echo $token;
    $pos = stripos($token, "*");
    if ($pos < 3 && $pos !== false) {
        return;
    }
    $token = strtok(" ");
}