使用==与strcmp进行string比较
似乎PHP的==运算符是区分大小写的? 那么有什么理由使用strcmp() ? 做这样的事是否安全? 
 if ( $password == $password2 ) { ... } 
	
 使用它的原因是因为strcmp 
如果str1小于str2则返回<0; 如果str1大于str2则为0;如果相等则为0。
  ==只返回true或false ,它不会告诉你哪个是“更大”的string。 
 你不应该使用==来进行string比较。  ===是的。 
 $something = 0; echo ('password123' == $something) ? 'true' : 'false'; 
只要运行上面的代码,你会看到为什么。
 $something = 0; echo ('password123' === $something) ? 'true' : 'false'; 
现在,这个好一点。
不要在PHP中使用==。 它不会做你期望的。 即使您将string与string进行比较,PHP也会隐式地将它们转换为浮点数,并在出现数字时进行数字比较。
例如'1e3'=='1000'返回true。
好吧..根据这个PHP错误报告 ,你甚至可以得到0wned。
 <?php $pass = isset($_GET['pass']) ? $_GET['pass'] : ''; // Query /?pass[]= will authorize user //strcmp and strcasecmp both are prone to this hack if ( strcasecmp( $pass, '123456' ) == 0 ){ echo 'You successfully logged in.'; } ?> 
 它给你一个警告,但仍然绕过比较。 
 你应该这样做=== @postfuturistbuild议。 
 一定要记住,比较string时,应该使用===运算符(严格比较)而不是 ==运算符(宽松比较)。 
 使用==可能是危险的。 
请注意,如果两者不同,它会将该variables转换为另一种数据types。
例子:
-  echo (1 == '1') ? 'true' : 'false';
-  echo (1 == true) ? 'true' : 'false';
 正如你所看到的,这两个来自不同的types,但结果是true ,这可能不是你的代码所期望的。 
 但是,使用=== ,build议testing显示它比strcmp()及其不区分大小写的替代方法strcasecmp()快一点。 
快速谷歌search这个速度比较: http : //snipplr.com/view/758/
strcmp()和“===”都区分大小写,但“===”要快得多
示例代码: http : //snipplr.com/view/758/
strcmp会根据它运行的环境(Linux / Windows)返回不同的值!
原因是它有一个错误报告说错误https://bugs.php.net/bug.php?id=53999
请小心处理!!谢谢。
总结所有答案:
- 
==是string比较的一个坏主意 。
 在许多情况下,它会给你“惊人的”结果。 不要相信它。
- 
===很好,会给你最好的performance。
- 
如果您需要确定哪个string是“更大”,通常用于sorting操作,则应使用 strcmp()。
此function可以帮助sorting。 要更清楚地分类。 如果string1在string2之前sorting,则strcmp()返回小于0;如果string2在string1之前sorting,strcmp()返回小于0;如果它们相同,则返回0。 例如
 $first_string = "aabo"; $second_string = "aaao"; echo $n = strcmp($first_string,$second_string); 
该函数将返回大于零,因为aaao正在sorting之前aabo。
 如果您希望按照字典顺序排列/比较string,可以使用strcmp() 。 如果你只是想检查平等,那么==就好了。 
使用strcmp进行string比较
 echo strcmp("my name","my name");