我正在使用比较运算符比较字符串。
我需要一些解释下面两个比较及其结果。
if('ai' > 'i')
{
echo 'Yes';
}
else
{
echo 'No';
}
output: No
为什么它们会这样输出?
if('ia' > 'i')
{
echo 'Yes';
}
else
{
echo 'No';
}
Output: Yes
为什么再次出现这个问题?
也许我忘记了一些基础知识,但我真的需要解释一下这些比较示例才能理解这个输出。
我正在使用比较运算符比较字符串。
我需要一些解释下面两个比较及其结果。
if('ai' > 'i')
{
echo 'Yes';
}
else
{
echo 'No';
}
output: No
为什么它们会这样输出?
if('ia' > 'i')
{
echo 'Yes';
}
else
{
echo 'No';
}
Output: Yes
为什么再次出现这个问题?
也许我忘记了一些基础知识,但我真的需要解释一下这些比较示例才能理解这个输出。
PHP将使用大于号和小于号比较字母字符串,基于字母顺序进行比较。
在第一个示例中,“ai”在字母顺序中出现在“i”之前,所以“>”(大于)的测试结果为false- 在顺序中更早被认为是“小于”而不是“大于”。
在第二个示例中,“ia”在字母顺序中出现在“i”之后,所以“>”(大于)的测试结果为true- 在顺序中更晚被认为是“大于”。
对于 coderabbi的回答,进一步解释:
这和某些应用程序中按数字排序并获取以下结果的逻辑相同:
它不是基于字符串长度,而是根据字符串中每个字符的顺序。
在 PHP 中,<
和 >
比较运算符将比较字符串的第一个字符,然后比较随后的其他字符。
因此,你的第一个表达式 ai(第一个字符串)和 i(第二个字符串)中的 a 与第二个字符串中的 i 作为第一个字符进行比较,使用 >
将返回 false
,随后由于相同的原因,第二个语句将返回 true
。
但是,如果你确实需要比较具有许多字符的两个较长的字符串值,则可以尝试使用 substr_compare 方法:
substr_compare("abcde", "bc", 1, 2);
substr_compare("string1", "string2", 0, length);
strcmp("string1", "string2", length)
,其中length是要从两个字符串中比较的字符数。