函數原型
- strcmp(string $str1, string $str2):二進制安全比較,**區分大小寫**。
- strcasecmp(string $str1, string $str2):二進制安全比較,**不區分大小寫**。
返回值規則
| 比較結果 | 返回值 |
| $str1 等於 $str2 | 0 |
| $str1 小於 $str2 | < 0 (負數) |
| $str1 大於 $str2 | > 0 (正數) |
「小於/大於」基於 ASCII 碼值逐字符比較。
代碼示例
<?php
$str1 = "幫客之家";
$str2 = "幫客之家";
$str3 = "www.jb51.net";
$str4 = "WWW.JB51.NET";
echo strcmp($str1, $str2) . "<br/>"; // 0 (相等)
echo strcmp($str3, $str4) . "<br/>"; // 1 (區分大小寫,'w' > 'W')
echo strcasecmp($str3, $str4) . "<br/>"; // 0 (不區分大小寫,視為相等)
?>
運行結果
0
1
0
相關函數家族
| 函數 | 大小寫 | 長度限制 | 說明 |
| strcmp | 敏感 | 否 | 標準比較 |
| strcasecmp | 不敏感 | 否 | 忽略大小寫 |
| strncmp | 敏感 | 是 | 比較前 n 個字符 |
| strncasecmp | 不敏感 | 是 | 忽略大小寫比較前 n 個 |
| strnatcmp | 敏感 | 否 | 自然排序算法 (2 < 10) |
| strnatcasecmp | 不敏感 | 否 | 自然排序忽略大小寫 |
應用場景
- 用戶認證:密碼驗證用
strcmp(或更安全的 hash_equals 防時序攻擊)。
- 排序比較:
usort($arr, 'strcmp') 或 strcasecmp 忽略大小寫排序。
- 配置匹配:環境變量、常量名比較常用
strcasecmp。
- 自然排序:文件名、版本號排序必用
strnatcmp(見下文)。
注意事項
- 返回值**僅表示大小關係**,具體數值無意義,不可依賴具體正負數大小。
- 多字節字符(中文)比較基於字節序,結果符合 Unicode 碼點順序,通常符合預期。
strcmp 是二進制安全的,可比較包含 \0 的字符串。