PHP将int与string进行比较

时间:2013-12-27 14:14:29

标签: 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) $membership_level_id == 5) {
        $temp_membership_name = "Option 2";
    } else {
        $temp_membership_name = "Option 3";
    }
}

由于某些原因,选项3始终是结果,我已经测试了$ membership_level_id设置为2和5,两次都是else块执行。

不知道为什么有任何提示?

6 个答案:

答案 0 :(得分:1)

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";
    }
}

答案 1 :(得分:0)

您错过了代码else if中的空间。 我测试了它,你可以看看:

在此测试: https://eval.in/83367

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";
    } else if ((int) $membership_level_id == 5) {
        $temp_membership_name = "Option 2";
    } else {
        $temp_membership_name = "Option 3";
    }

    return $temp_membership_name;
}

echo subscribe("", "", "", "", "", "2") . "   ";
echo subscribe("", "", "", "", "", 2);

输出:

Option 1   Option 1

答案 2 :(得分:0)

您应该检查输入。 php执行自动类型转换,因此即使数字存储为字符串,它仍应评估。类型转换不是必需的。

a)你的代码没有正确提供参数(检查拼写?)

b)输入的第一个字符中有空格或非数字值,导致类型转换返回值0或

c)你的函数的其他部分正在搞乱变量

我运行了您直接发布的代码,它可以正常使用整数或文本。我认为你间接设置$ membership_level_id,你应该检查你的输入,以确保该功能实际上接收你的想法。

答案 3 :(得分:-1)

如何使用“switch”语句然后提供一个标准的“默认”选项?

说... if ((int)$membership_level_id == 2)

PHP仅将文本转换为数字。

所以......在使用值之前检查$membership_level_id是否为数字呢?

`if(is_numeric($_membership_level_id))
{
//number.
} else {
// not a number.
}`

答案 4 :(得分:-2)

您可以将其用作解决方案。

 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";
 }

答案 5 :(得分:-4)

function subscribe($api,$target_list_name,$fname,$lname,$email_to_subscribe, $membership_level_id)
{

     $temp_membership_name = "";

 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";
 }
}

尝试使用此代码或对$ member_level_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";
 }
}