我正在尝试将已定义的代码与一组被阻止的国家/地区代码进行比较。在下面的示例中,国家/地区代码被我的if块捕获:
$country_code = 'US';
if ($country_code == ("NG" || "RO" || "VN" || "GH" || "SN" || "TN" || "IN" || "ID" || "KE" || "CN" || "CI" || "ZA" || "DZ" || "RU")) {
print "COUNTRY CODE: $country_code<br>";
}
我看到了这个结果“
COUNTRY CODE: US
我不希望“美国”被抓住......我错过了什么?
答案 0 :(得分:10)
你正在做的是OR
- 将字符串放在一起。由于转换为布尔值的非空字符串为true,因此计算结果如下:
$country_code == true
由于$country_code
也是一个非空字符串,因此也会计算为true
:
true == true
因此,你得到TRUE
。
要解决您的问题,您需要做Pekka建议的事情:
if (in_array($country_code, array('NG', 'RO', etc.)))
另见:
答案 1 :(得分:6)
您不能以这种方式将||
链接在一起并获得您期望的结果。它将返回TRUE,因为任何非空字符串的计算结果为true。由于==
左侧的操作数与右侧的整个操作数进行比较,因此您实际上是在说:
if ($country_code == (TRUE ||TRUE||TRUE||TRUE||TRUE...);
虽然做以下事情是有效的,但它失控了:
if ($country_code == "N" || $country_code == "RO" || $country_code == "VN" ...)
相反,请使用in_array()
;
$countries = array("NG","RO","VN","GH",...);
if (in_array($country_code, $countries) {
print "COUNTRY CODE: $country_code<br>";
}
答案 2 :(得分:5)
我会这样做
$country_code = 'US';
if (in_array($country_code, array("NG", "RO", "VN", "GH", "SN", "TN", "IN", "ID", "KE", "CN", "CI", "ZA", "DZ", "RU")) {
print "COUNTRY CODE: $country_code<br>";
}
答案 3 :(得分:3)
此:
("NG" || "RO" || "VN" || "GH" || "SN" || "TN" || "IN" || "ID" || "KE" || "CN" || "CI" || "ZA" || "DZ" || "RU")
实际上是一个布尔测试,它说“如果其中任何一个评估为真,则为真”。由于非空字符串为真,所以这是真的。同样,“美国”将被视为真实。所以简化我们得到的陈述: if(true == true)。
尝试使用数组和in_array
函数。
答案 4 :(得分:0)
如果以这种方式这样做会更简单。
$codes = array("NG", "RO", "VN");
$search = array_search("NG");
if($search) {
echo $codes[$search];
}
答案 5 :(得分:0)
$country_code = 'US';
在此设置$country_code
。
if ($country_code == ("NG" || "RO" || "VN" || "GH" || "SN" || "TN" || "IN" || "ID" || "KE" || "CN" || "CI" || "ZA" || "DZ" || "RU")) {
这里你的评价$country_code
没有真正反对,但因为它们都是非空字符串,它们要评估为TRUE
,并且因为$country_code
是一个非空字符串,它还会评估到TRUE
。
print "COUNTRY CODE: $country_code<br>";
您在第一行中设置的打印$country_code
。
}
你想要的是这样的
if (
$country_code == "NG" ||
$country_code == "RO" ||
$country_code == "VN" ||
$country_code == "GH" ||
$country_code == "SN" ||
$country_code == "TN" ||
$country_code == "IN" ||
$country_code == "ID" ||
$country_code == "KE" ||
$country_code == "CN" ||
$country_code == "CI" ||
$country_code == "ZA" ||
$country_code == "DZ" ||
$country_code == "RU"
) {