我可以做有条件的设置吗?

时间:2014-06-19 10:56:02

标签: php if-statement switch-statement isset

我不确定这样做的最佳方法,所以我们非常感谢您的想法!

基本上,在PHP页面的开头,我试图获得$ pin的变量。

该值可以从整个网站的不同电话中获取。

最初我有:

if (isset($Reader->Pin)) { $pin = $Reader->Pin; } else { $pin = isset($_GET['Pin']) ? $_GET['Pin'] : ''; }

正如您所看到的,有几种方法可以在整个网站上获取PIN码(而不是我的代码)。

我需要在这里添加一些东西,它们也可以获得$ Reader-> pin的值(不同于 - > Pin!)。

但最后,如果它们都不匹配,它仍然需要返回为空白。

我可以添加此内容的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

我创建了一个coalesce函数并从那里分配$ pin:

function coalesce($args_)
{
    $result = null;
    if (func_num_args() > 0)
    {
        foreach(func_get_args() as $arg)
        {
            if ($arg != null)
            {
                $result = $arg;
                break;
            }
        }
    }
    return $result;
}


// in the header:

$pin = coalesce($Reader->Pin?:null, $_GET['Pin']?:null, ..., ..., ...);

现在,您只需按照重要性的顺序将可能的源作为合并函数的参数。

修改

coalesce函数接受任意数量的参数,并从左到右遍历它们。它返回第一个不松散的参数。

答案 1 :(得分:0)

最后,我确定了我可以做以下事情:

if (isset($Reader->Pin))
    { $pin = $Reader->Pin; } 
elseif (isset($Reader[0]->Pin))
    { $pin = $Reader[0]->Pin; }
else
    { $pin = isset($_GET['Pin']) ? $_GET['Pin'] : ''; }