Сравнение строк
Posted in: Многофайловые сценарии PHP, By: admin, At: Декабрь 20th, 2007
Определение отношений между двумя строками не так очевидно, как те же операции с числами. Главная проблема заключается в контексте. Если вы сравниваете строки в двоичной форме, то два слова “Macro” и “macro” будут полностью различны, поскольку байтовое значение символа “М”, как и должно быть, отличается от значения символа “т”. Однако, в зависимости от ваших требований, “Macro” и “macro” могут быть эквивалентны и должны трактоваться именно так.
Наиболее простой способ сравнения двух строк предусматривает использование встроенных операций сравнения РНР. Однако есть несколько ловушек, о которых следует знать. Рассмотрим, например, следующее выражение:
echo (0 == ‘О’);
Из-за того, что один из операндов является целым числом, строка ‘ 0′ неявно также конвертируется в целое перед выполнением сравнения, приводя к результату, равному 1. Пока, на первый взгляд, это не кажется проблемой, но очень легко становится ею, когда встретится что-то вроде:
(О т ‘Macro’);
Так как строка ‘Macro’ конвертируется в целое значение 0 при вычислении выражения, результатом также будет true, что на выходе даст 1. Скорее всего, вы никогда не захотите, чтобы такое случилось в вашем коде, поэтому никогда не применяйте простые операции сравнения при работе со строками, если только точно не уверены в том, что делаете.
Leave a Reply