strpos 和 Ø 的奇怪行为
Strange behaviour of strpos and Ø
这对我来说似乎很奇怪,但也许有一个简单的解释。
尽管针肯定是大海捞针的一部分,但为什么以下代码块会导致 false
?
if(strpos("Ø25xØ2", "Ø")){
echo "true";
} else {
echo "false";
}
strpos is finding that string at offset 0, which evaluates as false. To truly detect if it's not found, you need to explicitly check both type and value using either ===
or !==
operators,例如:
if (strpos("Ø25xØ2", "Ø") !== false) {
echo "true";
} else {
echo "false";
}
手册中对此也有很好的介绍。
strpos
将 return 0
如果针在大海捞针的最开始。但是 0
的计算结果为布尔值 false
,因此您的 if
条件失败。
您需要与 false
进行比较,如果根本找不到针,则为 return 值:
if (false !== strpos("Ø25xØ2", "Ø")) {
echo "true";
} else {
echo "false";
}
这对我来说似乎很奇怪,但也许有一个简单的解释。
尽管针肯定是大海捞针的一部分,但为什么以下代码块会导致 false
?
if(strpos("Ø25xØ2", "Ø")){
echo "true";
} else {
echo "false";
}
strpos is finding that string at offset 0, which evaluates as false. To truly detect if it's not found, you need to explicitly check both type and value using either ===
or !==
operators,例如:
if (strpos("Ø25xØ2", "Ø") !== false) {
echo "true";
} else {
echo "false";
}
手册中对此也有很好的介绍。
strpos
将 return 0
如果针在大海捞针的最开始。但是 0
的计算结果为布尔值 false
,因此您的 if
条件失败。
您需要与 false
进行比较,如果根本找不到针,则为 return 值:
if (false !== strpos("Ø25xØ2", "Ø")) {
echo "true";
} else {
echo "false";
}