PHP - 为变量生成警告

PHP - warning generated for variable

如果发生这两件事之一,我正在尝试在我的 HTML 中生成一条错误消息,但是相应的消息显示 HTML,但我也收到了警告因为有一个未定义的变量。

我该如何用我的方式解决它?

代码:

$tweet = "{$_POST['tweet']}";

$errorOne = "Error: Your tweet must be less than 140 characters.";
$errorTwo = "Error: Your tweet must not be blank.";

if(strlen($tweet) > 140){
    $errorOneOutput = $errorOne;
}elseif(empty($tweet)){
    $errorTwoOutput = $errorTwo;
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>
<body>
    <?= $errorOneOutput ?>
    <?= $errorTwoOutput ?>
</body>
</html>

我曾尝试在我的 PHP 块中使用 exit() 而不是嵌入 HTML,但那样不会生成 HTML。我特别需要在 HTML 中显示错误消息,如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Challenge 3</title>
</head>
<body>
    <br />
<b>Warning</b>:  Undefined variable $errorOneOutput in <b>C:\xampp\htdocs\WEBD\Challenges\Challenge 3 - Twitter Challenge\insert.php</b> on line <b>29</b><br />
    Error: Your tweet must not be blank.</body>
</html>

我也知道我可以回显我的错误,但同样这些错误会在 HTML 之上而不是在它之内。

将‘$errorOneOutput = null’放在顶部以确保始终定义该变量。

问题是您正在尝试打印尚未初始化的变量:

<?= $errorOneOutput ?>
<?= $errorTwoOutput ?>

要初始化这些变量,请将其添加到 php 文件的顶部:

$errorOneOutput = "";
$errorTwoOutput = "";

$errorOneOutput 仅在 $tweet 中包含的字符串长度大于 140 个字符时才会被定义。此外,将相同的值重新分配给重复的变量是没有意义的。您应该考虑按如下方式重构您的代码:

<?php
$tweet = $_POST['tweet'];

$errorOne = "Error: Your tweet must be less than 140 characters.";
$errorTwo = "Error: Your tweet must not be blank.";
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>
<body>
    <?php if (strlen($tweet) > 140) : ?>
        <?= $errorOneOutput ?>
    <?php elseif (empty($tweet)) : ?>
        <?= $errorTwoOutput ?>
    <?php endif ?>
</body>
</html>