Важно помнить, что strpos()
возвращает индекс строки, который может быть нулем, который оценивается как ложный, если вы не проверяете должным образом.Всегда сравнивайте строго и не используйте оператор или , если вы хотите проверить, выполняются ли условия оба .
if (strpos($string,'Good') !== false && strpos($string,'Excellent') !== false) {
$pid= '1';
} else {
$pid= '0';
}
Или, более кратко, использовать троичный :
$pid = (strpos($string,'Good') !== false && strpos($string,'Excellent') !== false) ? 1 : 0;
Просто чтобы расширить использование strpos
, рассмотрим этот код, который возвращает «нет», потому что «Хороший» находится в нулевой позиции.
$string = "Good morning";
if (strpos($string, "Good")) {
echo "yes";
} else {
echo "no";
}
Из руководства:
Предупреждение
Эта функция может возвращать логическое значение FALSE
, но также может возвращать ненулевое значениезначение, которое оценивается как FALSE
.Пожалуйста, прочитайте раздел Booleans для получения дополнительной информации.Используйте оператор === для проверки возвращаемого значения этой функции.