PHP的===操作符似乎是区分大小写的。那么,是否有理由使用strcmp()呢?
做下面这样的事情安全吗?
if ($password === $password2) { ... }
PHP的===操作符似乎是区分大小写的。那么,是否有理由使用strcmp()呢?
做下面这样的事情安全吗?
if ($password === $password2) { ... }
当前回答
永远不要使用==进行字符串比较。===是可以的。
$something = 0;
echo ('password123' == $something) ? 'true' : 'false';
只要运行上面的代码,你就会明白为什么。
$something = 0;
echo ('password123' === $something) ? 'true' : 'false';
现在好一点了。
其他回答
总结所有答案:
==对于字符串比较来说是一个坏主意。 在许多情况下,它会给你“令人惊讶”的结果。不要相信它。 ===很好,会给你最好的表现。 如果需要确定哪个字符串“更大”,则应该使用Strcmp(),通常用于排序操作。
如果希望按字典顺序排列/比较字符串,可以使用strcmp()。如果你只是想检查是否相等,那么==就可以了。
永远不要使用==进行字符串比较。===是可以的。
$something = 0;
echo ('password123' == $something) ? 'true' : 'false';
只要运行上面的代码,你就会明白为什么。
$something = 0;
echo ('password123' === $something) ? 'true' : 'false';
现在好一点了。
使用它的原因是strcmp
如果str1小于str2则返回< 0;>如果str1大于str2则为0,如果相等则为0。
===只返回true或false,它不会告诉你哪个字符串更大。
strcmp将根据其运行的环境(Linux/Windows)返回不同的值!
原因是它有一个错误,正如错误报告所说- bug #53999strcmp()并不总是返回-1、0或1