PHP变量不相等但返回true

时间:2015-06-27 12:42:23

标签: php wordpress

所以这似乎应该很容易,但我不知道为什么它不起作用。我是一个周末代码战士,所以很有可能我有一些明显缺失的东西。问题是我正在做一个简单的if语句来检查变量是否等于数字或'字符串',当它显然不相等时它仍在运行if语句。

$user = ca_get_user(get_current_user_id());
    $role = $user->role;
        if ($role == '2'):
            print_r ($role);
        endif;

返回此

1

好吧,因为角色被定义为1.所以我认为除非我的逻辑已被扭曲很长一段时间,否则不应该发生。我已经对$ role进行了is_numeric检查,并且返回为false。我也试过这个数字只是为了好的措施。我错过了会让这种回归成为现实的东西吗? (它实际上是针对任何比较运行的。如果我将它设置为任何比较,它就不会运行!=)

使用此变量设置为数据库。

<select name="user_company_type" required>
                                <option value="" disabled selected>Company Type*</option>
                                <option value="1" <?php if(isset($_POST['user_company_type']) && $_POST['user_company_type'] == '1') echo 'selected'; ?>>General Contractor</option>
                                <option value="2" <?php if(isset($_POST['user_company_type']) && $_POST['user_company_type'] == '2') echo 'selected'; ?>>Architect</option>
                                <option value="3" <?php if(isset($_POST['user_company_type']) && $_POST['user_company_type'] == '3') echo 'selected'; ?>>Owner/Developer/OPM</option>
                                <option value="4" <?php if(isset($_POST['user_company_type']) && $_POST['user_company_type'] == '4') echo 'selected'; ?>>Sub-Contractor</option>
                                <option value="5" <?php if(isset($_POST['user_company_type']) && $_POST['user_company_type'] == '5') echo 'selected'; ?>>Building Consultant</option>
                            </select>

1 个答案:

答案 0 :(得分:0)

如果ca_get_user()返回某种对象,其中role是其中的属性,那么这可能是您要表达的内容:

$user = ca_get_user(get_current_user_id());
$role = $user->role;
if (2 === intval($role)):
    print_r ($role);
endif;

更经典的实现方式是:

$user = ca_get_user(get_current_user_id());
$role = $user->role;
if (2 === intval($role)) {
    print_r ($role);
}

不确定是否需要intval()来电,这取决于我不知道的课程定义。但是添加它可能可能安全,它可能会阻止一些意外。您真的应该通过查看文档或转储用户对象一次来了解$user->role的类型。