当变量存在时,PHP 中的未定义变量

Ste*_* C. 2 php phpstorm

我查看了其他 Stack Overflow 问题,但没有一个解决了该问题。以下类定义变量,然后在 HTML 代码中调用该变量。

我对另一个 PHP 页面使用了相同的方法,它运行良好。出于某种原因,它在此页面上不起作用。我已经多次这样做了,没有任何问题。PhpStorm说变量$user “可能尚未定义”,但我知道它是。我怎样才能解决这个问题?

我试过在页面顶部设置变量 global 没有运气。我尝试在 if(isset()) 之后设置变量 global 并且仍然不起作用。这是我的 PHP 代码:

<?php
    session_start();
    require_once 'includes/class.user.php';
    $user_edit = new USER();

    if(!$user_edit->is_logged_in())
    {
        $user_edit->redirect('index.php');
    }

    if(isset($_GET['user_id'])) {
        $tid = $_GET['user_id'];
        $stmt = $user_edit->runQuery("SELECT * FROM users WHERE user_id = :id");
        $stmt->execute(array(':id' => $tid));
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
    }
?>

<?php include('header.php'); ?>

    <div class="container side-collapse-container">
        <p><?php if (!empty($user['username'])) {
                echo $user['username'];
            } ?></p>
    </div>

<?php include('footer.php'); ?>
Run Code Online (Sandbox Code Playgroud)

这是使用 XAMPP 运行后在浏览器中显示的内容

注意:未定义变量:user in C:\Users\USER\PhpstormProjects\site1\view_user.php 第 22 行

小智 5

PhpStorm 说 $user 变量可能未定义,因为它当前设置在“if”块中。如果您希望 PhpStorm msg 消失,请将“if”上方的 $user 定义为数组。

$user = [];
if (isset($_GET['user_id'])) {
    $tid = $_GET['user_id'];
    $stmt = $user_edit->runQuery("SELECT * FROM users WHERE user_id = :id");
    $stmt->execute(array(':id' => $tid));
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
}
Run Code Online (Sandbox Code Playgroud)

如果用户名未显示在页面上,则查询返回为空 (false) 或索引“用户名”不正确。

当然,要填充 $user,user_id 需要在查询字符串中。