strpos不适用于逗号分隔的字符串中的第一个字符串

时间:2019-07-04 08:59:41

标签: php strpos

查看此demo

我有两个用逗号分隔的字符串列表,想要查找字符串并返回一条消息。我注意到,在特定情况下,我在查找第一个列表的第一个字符串时找不到它。如果我将该字符串移动到另一个位置,它将。不明白为什么。

$dynamic_list = "AZ, CA, CO";
$static_list = "MN,WA,IA";

$search = "AZ";


if ( strpos($dynamic_list . ',' . $static_list, $search) == false && !empty($search) ) { // check string is not empty + that it is not on any of the lists
    echo 'not found: String '.$search.' was not found in lists';
} else {
    echo 'found';
}

3 个答案:

答案 0 :(得分:2)

    $dynamic_list = "AZ, CA, CO";
    $static_list = "MN,WA,IA";

    $search = "AZ";


    if ( strpos($dynamic_list . ',' . $static_list, $search) === false && !empty($search) ) { // check string is not empty + that it is not on any of the lists
        echo 'not found: String '.$search.' was not found in lists';
    } else {
        echo 'found';
    }

添加===,然后尝试

答案 1 :(得分:1)

  

您只需要将===替换为==,那么它将检查变量类型为,这里您的strpos()返回0,它在您的阅读中为false如果会得到

$dynamic_list = "AZ, CA, CO";
$static_list = "MN,WA,IA";
$search = "AZ";
if ( strpos($dynamic_list . ',' . $static_list, $search) === false && !empty($search) ) { 
        echo 'not found: String '.$search.' was not found in lists';
} else {
        echo 'found';
}

答案 2 :(得分:1)

请注意我们使用./mvnw clean install -DskipTests ./mvnw docker:build -pl spring-cloud-dataflow-server ===根本无法按预期工作,因为“ A”在“ AZ”中的位置是第0个(第一个)字符。所以==会做的 为你在这里。让我们尝试使用===

在此处查看示例: https://www.php.net/manual/en/function.strpos.php

警告

  

此函数可能返回布尔FALSE,但也可能返回   非布尔值,其值为FALSE。请阅读以下内容   有关更多信息的布尔值。使用===运算符测试   该函数的返回值。

===

演示: https://3v4l.org/bo4Yjr