关于php中开关条件的问题
我希望有人能知道我为什么会得到以下结果,因为我期待着其他的东西关于php中开关条件的问题,php,comparison,switch-statement,Php,Comparison,Switch Statement,我希望有人能知道我为什么会得到以下结果,因为我期待着其他的东西 $x = NULL; switch ($x) { case "0": echo "String"; break; case 0: echo "Integer"; break; case NULL: echo "NULL"; break; case FALSE: echo "Bo
$x = NULL;
switch ($x) {
case "0":
echo "String";
break;
case 0:
echo "Integer";
break;
case NULL:
echo "NULL";
break;
case FALSE:
echo "Boolean";
break;
case "":
echo "Empty string";
break;
default:
echo "Something else";
break;
}
// outputs "Integer" was expecting "NULL"
$x=6;
switch ($x) {
case "6b":
echo "6b";
break;
case "6":
echo "6 empty";
break;
case 6:
echo "6 full";
break;
default:
echo "6 half";
break;
}
// outputs "6b" was expecting "6 empty"
注:
请注意,开关/外壳没有松动的比较
因此,不要像:$x==0这样进行比较,而是做$x==0注意:
请注意,开关/外壳没有松动的比较
因此,在进行$x=0的比较时,$x==0自动转换为整数,而不是像:$x==0这样进行比较。您可能希望改用if/else if结构,并使用$x==0进行比较表示严格等于。$x在进行比较时自动转换为整数$x=0。您可能希望改用if/else if结构,并使用$x==0进行比较表示严格等同于本手册: 请注意,开关/外壳没有松动的比较 它将首先检查NULL==0(与字符串一样为NULL)是否为0 NULL as integer为0,因此将匹配-printing integer 对于6,它将把大小写转换为整数-6b将变成相等的6 这是因为:
NULL != "0";
NULL == 0;
"6b" == 6;
手册:
请注意,开关/外壳没有松动的比较
它将首先检查NULL==0(与字符串一样为NULL)是否为0
NULL as integer为0,因此将匹配-printing integer
对于6,它将把大小写转换为整数-6b将变成相等的6
这是因为:
NULL != "0";
NULL == 0;
"6b" == 6;
switch/case所做的比较与类型转换一起工作 基本上,它使用==运算符,而不是===运算符 引述: 如果将数字与字符串进行比较,或者比较涉及 数字字符串,然后将每个字符串转换为一个数字 进行数值比较。这些规则也适用于交换机 声明
switch/case所做的比较与类型转换一起工作 基本上,它使用==运算符,而不是===运算符 引述: 如果将数字与字符串进行比较,或者比较涉及 数字字符串,然后将每个字符串转换为一个数字 进行数值比较。这些规则也适用于交换机 声明
虽然你是对的,但我认为你引用了错误的段落。讨论中的比较根本不涉及字符串。至少在OP的第二个例子中,有字符串、整数和数字字符串,而不是第一个。哦,好的,还有第二个。哇,多么不准确的问题>。虽然你是对的,但我认为你引用了错误的段落。讨论中的比较根本不涉及字符串。至少在OP的第二个例子中,有字符串、整数和数字字符串,而不是第一个。哦,好的,还有第二个。哇,多么不准确的问题>。