PHP比较int和string
代码如下PHP比较int和string,php,Php,代码如下 function subscribe($api, $target_list_name, $fname, $lname, $email_to_subscribe, $membership_level_id) { $temp_membership_name = ""; if ((int) $membership_level_id == 2) { $temp_membership_name = "Option 1"; } elseif ((int) $
function subscribe($api, $target_list_name, $fname, $lname, $email_to_subscribe, $membership_level_id) {
$temp_membership_name = "";
if ((int) $membership_level_id == 2) {
$temp_membership_name = "Option 1";
} elseif ((int) $membership_level_id == 5) {
$temp_membership_name = "Option 2";
} else {
$temp_membership_name = "Option 3";
}
}
出于某种原因,不管结果如何,选项3始终是结果,我已经将$membership\u level\u id设置为2和5进行了测试,这两次执行else块
不明白为什么会有任何提示?您可以将此作为解决方案
if ($membership_level_id == "2") {
$temp_membership_name = "Option 1";
} elseif ($membership_level_id == "5") {
$temp_membership_name = "Option 2";
} else {
$temp_membership_name = "Option 3";
}
您的代码中缺少了
else if
中的空格。
我已经测试过了,你可以看看:
此处测试:
输出:
Option 1 Option 1
尝试使用此代码或对$member\u level\u id的值进行故障排除
function subscribe($api,$target_list_name,$fname,$lname,$email_to_subscribe, $membership_level_id)
{
$temp_membership_name = "";
echo $membership_level_id;exit;
if ((int)$membership_level_id == '2') {
$temp_membership_name = "Option 1";
} elseif ((int)$membership_level_id =='5') {
$temp_membership_name = "Option 2";
} else {
$temp_membership_name = "Option 3";
}
}
使用“switch”语句,然后提供一个标准的“default”选项怎么样
也就是说<代码>如果((int)$membership\u level\u id==2)
PHP仅将文本转换为数字
所以。。。在使用该值之前,检查$membership\u level\u id
是否为数字,如何
像
你应该检查你的输入。php执行自动类型转换,因此即使数字存储为字符串,它仍应进行计算。不需要进行类型转换。或者 a) 您的代码没有正确提供参数(检查拼写?) b) 输入的第一个字符中有空格或非数值,导致类型转换返回0或0的值 c) 函数的其他部分正在处理变量
我直接运行了您发布的代码,它可以处理整数或文本。我认为您间接地设置了$membership\u level\u id,您应该检查您的输入,以确保函数实际接收到您认为的内容 请发布
var\u dump($membership\u level\u id)的输出代码>。只要$membership\u level\u id的值为2或5(作为字符串或数字),它将输入一个案例。您使用的是双等号,所以您甚至不需要(int),它不会检查类型。5 == "5", "2" == 2, "2" !== 2.我认为下面的答案之一不是解决方案,问题可能发生在函数调用之前。$membership\u level\u id从何而来?嗯,这是一个怎样的“解决方案”?因为$membership\u level\u id是一个字符串,所以要比较的值也必须是一个字符串。@user3045072这是错误的。在比较字符串和整数时,PHP会自动将字符串转换为整数。这种技术被称为“类型杂耍”:您在代码的else if中遗漏了一个空格。你能测试并确认吗@Nizzle@Nizzle你试过了吗?试过了,它仍然总是将$temp_membership_name设置为“选项3”@Nizzle:你看到我的链接了吗?它显示正确的输出。请看这里:它正在工作。你应该用我的函数替换你的订阅函数。如果这个函数在您的代码中不起作用,那么在其他地方就没有问题了。@Nizzle:您发布的问题在我的链接中得到了解决。所以,如果你在其他地方有问题,你应该作为一个新问题来回答。
function subscribe($api, $target_list_name, $fname, $lname, $email_to_subscribe, $membership_level_id) {
$temp_membership_name = "shevehferhgifsfshfishfishf";
if ((int) $membership_level_id == 2) {
$temp_membership_name = "Option 1";
} elseif ((int) $membershipMWAHHAHAHHAHAHA_level_id == 5) {
$temp_membership_name = "Option 2";
} else {
$temp_membership_name = "Option 3";
}
}
function subscribe($api,$target_list_name,$fname,$lname,$email_to_subscribe, $membership_level_id)
{
$temp_membership_name = "";
echo $membership_level_id;exit;
if ((int)$membership_level_id == '2') {
$temp_membership_name = "Option 1";
} elseif ((int)$membership_level_id =='5') {
$temp_membership_name = "Option 2";
} else {
$temp_membership_name = "Option 3";
}
}
`if(is_numeric($_membership_level_id))
{
//number.
} else {
// not a number.
}`
function subscribe($api, $target_list_name, $fname, $lname, $email_to_subscribe, $membership_level_id) {
$temp_membership_name = "shevehferhgifsfshfishfishf";
if ((int) $membership_level_id == 2) {
$temp_membership_name = "Option 1";
} elseif ((int) $membershipMWAHHAHAHHAHAHA_level_id == 5) {
$temp_membership_name = "Option 2";
} else {
$temp_membership_name = "Option 3";
}
}