Строковый токенизатор в php - PullRequest
1 голос
/ 06 апреля 2011

У меня странная проблема, с которой я недавно столкнулся.
У меня есть следующий код для токенизации строки в php:

$ token = strtok ($ string, "#");

while ($token != false)
{
    echo $token;
    $token = strtok("#");

}

Простая проблема, с которой я столкнулся, заключается в том, что я разбираю файл, который содержит много чисел, поэтому в этом случае 0 будет считаться ложным. Таким образом, разбор не может быть завершен.

Что мне делать?

1 Ответ

7 голосов
/ 06 апреля 2011

Вы должны использовать оператор !== , чтобы сравнить $token с false:

while ($token !== false)


Если вы прочитаете страницу руководства strtok(), вы увидите следующее примечание (цитирование) :

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


Использование !== вместо != гарантирует, что преобразование типов не будет выполнено.

Например, 0 == false; но 0 !== false.

...