php Strpos在条件中未获得正确的结果

disho6za  于 2022-10-30  发布在  PHP
关注(0)|答案(1)|浏览(144)

嗨,我在尝试将其输出到正确的条件时遇到了麻烦,但现在,当我输出for each语句时,它会提示进入else语句,而不是if语句。它成功地输出了目录中的文件,但我就是无法获得具有匹配文件名的字符串,即使该字符串与之匹配。我的当前输出将是here2。当我检查$fullPSPath中的输出时,它将是空的。

if(strpos($var, "TL")!== false){
        foreach($dirIL as $file1){
            if(strpos( $file1 , $pattern) !== false){
                $res = $filePath .'IL\\' . $file1;
                return $res;
            } else{
                $fullPSPath = "PS File Not Found";
                //return $fullPSPath;
                return "here2"; //keeps returning this despite having a matching file name.
                }
            }
    } else {
        foreach($dirUL as $file2){
            if(strpos($file2, $pattern) !== false){                     
                $res = $filePath .'UL\\' . $file2;
                //return $res;
                return "here3";
            } else{
                $res = "PS File Not Found";
                //return $res;
                return "here4";
                }
            }
blmhpbnm

blmhpbnm1#

问题很可能是else部件对每个文件都运行。所以它总是从你检查的第一个文件返回。你应该只在没有匹配的文件时返回else部件。
你也可以通过使用一个变量来检查文件名而不是2个循环来减少多余的代码。

if(strpos($policyNo, "TL")!== false){
    $code = 'IL';
}
else {
    $code = 'UL';
}

// If any match, return path
foreach($dirIL as $file1){
    if(strpos( $file1 , $pattern) !== false){
        $fullPSPath = $PS_Path . $code . '\\' . $file1;
        return $fullPSPath;
    } 
}

// If none match, return not found
$fullPSPath = "PS File Not Found";
return $fullPSPath;

相关问题