проблема strpos с 0 == false?

Я использую strpos, чтобы найти позицию строки в другой строке. Сначала проверяю, найдена ли строка там. Вот моя строка:

if (strpos($grafik['data'],$ss1)<>false && strpos($grafik['data'],$ss2)<>false && strpos($grafik['data'],$ss1) < strpos($grafik['data'],$ss2)) 

Я проверяю, содержатся ли обе строки, а затем я хочу, чтобы первый был помещен перед вторым. В руководстве php говорится, что strpos возвращает false, когда строка не найдена. Однако, если моя строка начинается с нулевой позиции (strpos возвращает 0 с момента ее начала), это похоже на это утверждение

 strpos($grafik['data'],$ss1)<>false 

false. Как-то 0 == false? Как сделать утверждение истинным, когда strpos возвращает 0?

С http://www.php.net/manual/en/function.strpos.php :

Предупреждение

Эта функция может возвращать Boolean FALSE, но может также возвращать небулевое значение, которое оценивается как FALSE, например 0 или «". Пожалуйста, прочитайте раздел о Booleans для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции.

Вы должны использовать оператор === вместо == .

В вашем случае вместо использования <> используйте !== :

 strpos($grafik['data'], $ss1) !== false 

Это вернет TRUE, если $ss1 найден в $grafik['data']

Вам нужно проверить с помощью ===. Это гарантирует, что у вас есть точное значение false, а не 0.

Эта функция ведет себя непредсказуемо, поэтому, чтобы быть уверенным, что это будет иметь детерминированное поведение, используйте либо

 if(strpos($text,$string)===false) 

или проверить его с помощью переменной

$pos=strpos($text,$string); if($pos===false)