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>
如果发生这两件事之一,我正在尝试在我的 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>