Strpos 2 переменные - PullRequest
       17

Strpos 2 переменные

0 голосов
/ 16 декабря 2018

Я хочу проверить $string для 2 слов, мое условие должно иметь 2 слова, а не только 1

Я использовал следующий код, но он работает, только если он имеет хотя бы 1 переменную

if ((strpos($string,'Good') || strpos($string,'Excellent')) === true) {
    $pid= '1';
} else { 
    $pid= '0'; 
} 

echo $pid;

Любая идея, чтобы проверить одновременно 2 переменные?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Важно помнить, что 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 для получения дополнительной информации.Используйте оператор === для проверки возвращаемого значения этой функции.

0 голосов
/ 16 декабря 2018

вы можете заменить ||с &&, хотя регулярные выражения могут помочь вам стать более конкретными, позволяя учитывать прописные и границы слов.

...