如何在php中写这个条件

时间:2010-03-22 16:03:53

标签: php class

嘿伙计们,我正在写一个课,我想知道如何用这种方式写一个条件陈述:

$this->referer= (!empty($_SERVER['HTTP_REFERER'])) ? htmlspecialchars((string) $_SERVER['HTTP_REFERER']) : '';

我需要找到我的user_id,这是通常的条件:

    if(is_user($user)){ 
        $cookie=cookiedecode($user);
        $user_id=intval($cookie[0]);
    }

我想它应该是这样的:

    $this->user_id = (is_user($user)) ? (cookiedecode($user)) : $cookie[0];

但它没有用

3 个答案:

答案 0 :(得分:2)

这样的方式:

    if(is_user($user)){ 
        $cookie=cookiedecode($user);
        $this->user_id =intval($cookie[0]);
    }

答案 1 :(得分:2)

应谨慎使用三元运算符,并且只有在逻辑足够简单以保持可读性时!变得过于复杂,而且难以理解,速记的重要性超过了它的实用性。

三元运算符一次只能使用一个变量分配。这是manual example

<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// The above is identical to this if/else statement
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

你的例子

$this->user_id = (is_user($user)) ? (cookiedecode($user)) : $cookie[0];
如果cookiedecode($user)返回true,

会将user_id分配给is_user(),如果不是,则将$cookie[0]分配给{{1}}。

鉴于此:

你应该保留现有的代码结构!!

答案 2 :(得分:0)

 if(is_user($user)){ 
        $cookie=cookiedecode($user);
        $this->user_id =intval($cookie[0]);
    }

   I didn't see any ELSE statement in your code and i don't understand on why do you want to use short form of conditional statement.