Я использую 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)