Php 如果条件不适用于STRPO
我创建了自定义函数OutputMessage,从这里插入错误消息,其类样式如下:图像上载失败!然后我分解字符串并将类从它的外接程序拆分到div类,但我的函数运行不正常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
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$消息并告诉我发生了什么?