2017-01-04 4 views
0

Я создал пользовательскую функцию OutputMessage откуда я вставив сообщение об ошибке с его ClassStyle как этот Error: image upload failed!, а затем я взрываюсь строка и сплит-класса от него добавить, чтобы div class но моя функция не работает хорошо.Если условие не работает с StrPos

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 проверка не работает, потому что я передаю сообщение с своим классом, но это все-таки возвращается класс

+0

Какой класс вы имеете в виду? –

+0

Класс Класс класса стилей, как опасность, успех Я передаю строку вроде этого «Danger: загрузка изображения не удалась!» –

+0

так что сначала найдется строка position ':' if true, а затем взорвать строку и вернуть сообщение –

ответ

2

по умолчанию Из manual entry of strpos() function:

Возвращает позицию, где игла существует относительной к началу строки стога сена (независимо от смещения). Также обратите внимание, что позиции строк начинаются с 0, а не 1.

Возвращает FALSE, если игла не была найдена.

, что означает, что if($Postion !== TRUE) всегда будет true как strpos() никогда не возвращается true.

Чтобы ваша функция работала должным образом, измените инструкцию if на номер if($Postion === false).

2

Из документов strpos вы можете видеть, что функция будет NEVER return true. Просто измените его на false в выражении if, и все будет работать нормально.

3

Почему вы не можете достичь, как это ....

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); 
     } 
    } 
} 
1

StrPos() возвращает начальную позицию строки в виде целого числа или FALSE, если строка не существует. Таким образом, оператор if else никогда не попадает в оператор else, поскольку $ Position никогда не будет равным TRUE.

Подмените оператор if, чтобы проверить FALSE if($Position === FALSE), тогда вы сможете получить правильное поведение.

1

Вы можете использовать больше чем 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 ""; 
} 

}

1

Try достичь с помощью этого

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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^