Почему в PHP нет простой функции «содержит строки»?

Мне любопытно, почему форум «содержит» так сложен в PHP?

Я изучаю PHP из не очень используемого языка, называемого лассо. PHP и Лассо очень похожи.

У Лассо есть одна замечательная функция: содержит строку >>

if($myVar >> 'x')  // this is a contains statement

Есть ли более простой способ, чем:

if(strpos($a, 'are') !== false)

Это почти похоже на двойной негатив. Почему нет == Правда? Это, наверное, самая запутанная вещь, с которой я столкнулся. Я надеюсь, что кто-то может пролить свет!

РЕДАКТИРОВАТЬ: я думаю, что ответ на мой вопрос, нет другого ярлыка кода для содержит. Спасибо всем за помощь.

-1

Решение

Следует отметить, что strpos будет выполнять преобразование строк на объектах, которые содержат __toString() метод

такой как этот

    //Enter your code here, enjoy!

class foo{

public function __toString(){
return 'hello world';
}
}

$Foo = new foo;

echo strpos($Foo, "world");

Выходы

6

Конечно, в данном случае это действительно маловероятный сценарий, но я подумал, что стоит упомянуть.

Как видно из этого песочница

1

Другие решения

Как говорят в документах:

Эта функция может возвращать логическое значение FALSE, но также может возвращать и не булево значение, которое оценивается как FALSE.

а также

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

Ты не можешь сделать == true так как strpos может вернуться 0 если строка встречается в 0-м индексе (то есть в самом начале строки), что приведет к ошибке == true проверить как 0 является ложным значением y

TL; DR: strpos это не функция «содержит», это функция «какова позиция строки», которая может быть используемый как «содержит» функцию в результате.

2