Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果条件不适用于STRPO_Php_Function_Strpos - Fatal编程技术网

Php 如果条件不适用于STRPO

Php 如果条件不适用于STRPO,php,function,strpos,Php,Function,Strpos,我创建了自定义函数OutputMessage,从这里插入错误消息,其类样式如下:图像上载失败!然后我分解字符串并将类从它的外接程序拆分到div类,但我的函数运行不正常 function OutputMessage($Message=''){ if($Message){ $Postion = strpos($Message,":"); if($Postion !== TRUE){ return sprintf('<div cla

我创建了自定义函数OutputMessage,从这里插入错误消息,其类样式如下:图像上载失败!然后我分解字符串并将类从它的外接程序拆分到div类,但我的函数运行不正常

function OutputMessage($Message=''){
    if($Message){
        $Postion = strpos($Message,":");
        if($Postion !== TRUE){
            return sprintf('<div class="alert alert-default">%s</div>',$Message); 
        }else{
            $Message = explode(": ",$Message);
            return sprintf('<div class="alert alert-%s">%s</div>',strtolower($Message[0]),$Message[1]); 
        }
    }else{
        return "";
    }
}
$Position check不起作用,因为我正在用它的类传递消息,但它仍然从以下位置返回默认类:

返回针相对于干草堆字符串开头的位置,与偏移无关。还要注意,字符串位置从0开始,而不是从1开始

如果未找到指针,则返回FALSE

这意味着如果$position!==TRUE将始终为TRUE,因为strpos永远不会返回TRUE


要使函数按预期工作,请将if语句更改为if$position===false。

从的文档中,您可以看到函数永远不会返回true。只要在if语句中将其更改为false,一切都会正常工作。

为什么您不能实现这样的目标

function OutputMessage($Message = NULL){
    if(is_null($Message){
        return;
    }
    else {

        $arr = explode(":",$Message);
        if(count($arr)>0){
            return sprintf('<div class="alert alert-%s">%s</div>',strtolower($arr[0]),$arr[1]); 
        }

       else {
            return sprintf('<div class="alert alert-default">%s</div>',$Message); 
        }
    }
}

strpos函数将字符串的起始位置返回为整数,如果字符串不存在,则返回FALSE。因此,if-else语句永远不会命中else语句,因为$Position永远不会等于TRUE


交换if语句以检查FALSE如果$Position===FALSE,则应该能够获得正确的行为

您可以使用大于0的真瞬间

function OutputMessage($Message=''){
if($Message){
    $Postion = strpos($Message,":");
    if($Postion < 0){
        return sprintf('<div class="alert alert-default">%s</div>',$Message); 
    }else{
        $Message = explode(": ",$Message);
        return sprintf('<div class="alert alert-%s">%s</div>',strtolower($Message[0]),$Message[1]); 
    }
}else{
    return "";
}

}

试着用这个来实现

function OutputMessage($Message=''){
    if(is_null($Message) || $Message === ""){ return ""; }

    if(strpos($Message,":") === false){
       $result = sprintf('<div class="alert alert-default">%s</div>',$Message); 
    }else{
        $Message = explode(": ",$Message);
        $result = sprintf('<div class="alert alert-%s">%s</div>',strtolower($Message[0]),$Message[1]); 
    }
    return $result;
}

你指的是哪个类?类指样式表类,如danger,success,我正在传递字符串,如danger:图像上传失败!首先是查找字符串位置:如果为true,则分解字符串并返回消息我也遇到过这种情况,但我使用strcmp$str1,$str2>0。。在这行$Message=explode:,$Message之后是OK;添加var_dump$消息并告诉我发生了什么?