未登录时未定义的变量错误。

时间:2014-04-14 10:03:20

标签: php variables undefined

我发出错误声明"注意:未定义的变量:user_data"只有当没有人登录时,当有人登录时,它会显示Hello(用户名)

以下是回显名称的代码

"Hello, <?php echo $user_data['first_name']; ?>!"

无论如何,当没有用户登录时,它只能打招呼,而不是错误消息。

感谢。

3 个答案:

答案 0 :(得分:2)

是的,只是:

Hello <?php echo isset($user_data['first_name']) ? ", ".$user_data['first_name']: ''; ?>!

答案 1 :(得分:2)

在使用之前检查变量是否存在,

$username = isset($user_data['first_name']) ? $user_data['first_name'] : ""; 
echo "Hello ".$username ."!";

答案 2 :(得分:0)

我觉得以前的答案并没有真正解释发生了什么,所以我会在这里尝试更详细。

他们两个人做的是使用ternary operator,我喜欢将其称为&#34;如果&#34;,您可以将其视为一行上的以下片段:

if ($condition) {  
  echo "this";  
} else {
  echo "that";
}

或者,使用三元运算符:

echo $condition ? "this" : "that"; // prints this if condition is true, that if false.

你真正需要解决的问题是检查你的变量是否设置了isset,isset检查是否设置了变量,所以在if条件下使用它会解决你的错误。

示例,以及您问题的答案:

if (isset($user_data['first_name'])) { 
  echo 'Hello, ' . $user_data['first_name']; 
} else {
  echo 'Hello!';
}

因此,虽然三元运算符在这里使用起来更方便,但不需要解决您的问题,只需要检查isset以验证它是否已设置,是否需要。

尽管如此,他们两个确实解决了你的问题,它的可读性更低,而且可能有点令人困惑。