只有在PHP中有值时才将变量添加到数组中?

时间:2015-05-08 11:18:18

标签: php arrays yii2

我将变量传递给Yii2框架中的index视图。我有以下代码:

return $this->render('index', array(
    'userresult' => $userresult,
    'topresult' => $topresult,
    'result' => $result
));

如果用户登录,我只需要传递变量$userresult,因为如果用户未登录,则$userresult变量不存在。这是我尝试过但我无法运行if语句:

return $this->render('index', array(
    if (!\Yii::$app->user->isGuest) { echo "'userresult' => $userresult"; },
    'topresult' => $topresult,
    'result' => $result
));

如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

其中一种方法:

// Initial array
$params = [
    'topresult' => $topresult,
    'result' => $result,
];

// Conditionally add other elements to array
if (!\Yii::$app->user->isGuest) {
    $params['userresult'] = $userresult
}

return $this->render('index', $params);

echo与数组混合显然是错误的。您应该在PHP中了解有关数组的更多信息。

此外,您可以忘记array()语法,使用较短的变体[],因为Yii2需要PHP> = 5.4。

我认为最好通过null

return $this->render('index', [
    'userresult' => $userresult ?: null,
    'topresult' => $topresult,
    'result' => $result
]);

然后检查变量是否为null,或仅查看if ($userresult) { ... }。我认为在视图中使用isset会更好。这样,参数号是不变的。