将嵌套的 PHP if 语句转换为单个 if 语句
Turning a nested PHP if statement into a single if statement
我正在尝试弄清楚如何将这个嵌套的 if 语句转换为单个 if 语句,但无法将其转换为 运行。
这是原始的嵌套 if 语句:
if (isset($_REQUEST['gender']))
{
$gender = $_REQUEST['gender'];
if ($gender == 'M')
{
echo '<p><b>Good day, Sir!</b></p>';
}
elseif ($gender == 'F')
{
echo '<p><b>Good day, Madam!</b></p>';
}
else
{ // Unacceptable value.
$gender = NULL;
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
}
else
{ // $_REQUEST['gender'] is not set.
$gender = NULL;
echo '<p class="error">You forgot to select your gender!</p>';
}
这是我的尝试:
if (isset($_REQUEST['gender']) && $gender == 'M')
{
$gender = $_REQUEST['gender'];
echo '<p><b>Good day, Sir!</b></p>';
}
elseif (isset($_REQUEST['gender']) && $gender == 'F')
{
$gender = $_REQUEST['gender'];
echo '<p><b>Good day, Madam!</b></p>';
}
elseif (isset($_REQUEST['gender']) && $gender != 'M' || (isset($_REQUEST['gender']) && $gender != 'F')
{ // Unacceptable value.
$gender = $_REQUEST['gender'];
$gender = NULL;
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
else
{ // $_REQUEST['gender'] is not set.
$gender = NULL;
echo '<p class="error">You forgot to select your gender!</p>';
}
我不确定是不是因为 $gender = $_REQUEST['gender'];
没有执行,但我们将不胜感激。
您正在检查变量 $gender
,然后再为其赋值。以下内容会有所帮助,
$gender = isset($_REQUEST['gender']) ? $_REQUEST['gender'] : "";
if ($gender == 'M')
{
echo '<p><b>Good day, Sir!</b></p>';
}
else if($gender == 'F')
{
echo '<p><b>Good day, Madam!</b></p>';
}
else if (!empty($gender) && ($gender != 'M' || $gender != 'F'))
{ // Unacceptable value.
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
else
{
echo '<p class="error">You forgot to select your gender!</p>';
}
这里的 switch 语句可能更简洁。
switch ($_REQUEST['gender']) {
case null:
echo '<p class="error">You forgot to select your gender!</p>';
break;
case 'M':
echo '<p><b>Good day, Sir!</b></p>';
break;
case 'F':
echo '<p><b>Good day, Madam!</b></p>';
break;
default:
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
这是我执行此操作的未经测试的方法。我也会先进行客户端 (javascript) 检查。我还假设你的性别字段是文本,如果是 select 你可以去掉 strtolower 和 trim.
<?php
if (empty($_REQUEST['gender']) || (strtolower(trim($_REQUEST['gender'])) != 'm' && strtolower(trim($_REQUEST['gender'])) != 'f')) {
//this should probably be checked client side for better usability, but better to check server side that we trust the data
echo '<p class="error">Please enter a valid Gender</p>';
} else {
$gender = strtolower(trim($_REQUEST['gender']));
echo '<p><b>Good day, ';
if ($gender == 'm') {
echo 'Sir!</b></p>';
} else {
echo 'Madam!</b></p>';
}
}
我正在尝试弄清楚如何将这个嵌套的 if 语句转换为单个 if 语句,但无法将其转换为 运行。
这是原始的嵌套 if 语句:
if (isset($_REQUEST['gender']))
{
$gender = $_REQUEST['gender'];
if ($gender == 'M')
{
echo '<p><b>Good day, Sir!</b></p>';
}
elseif ($gender == 'F')
{
echo '<p><b>Good day, Madam!</b></p>';
}
else
{ // Unacceptable value.
$gender = NULL;
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
}
else
{ // $_REQUEST['gender'] is not set.
$gender = NULL;
echo '<p class="error">You forgot to select your gender!</p>';
}
这是我的尝试:
if (isset($_REQUEST['gender']) && $gender == 'M')
{
$gender = $_REQUEST['gender'];
echo '<p><b>Good day, Sir!</b></p>';
}
elseif (isset($_REQUEST['gender']) && $gender == 'F')
{
$gender = $_REQUEST['gender'];
echo '<p><b>Good day, Madam!</b></p>';
}
elseif (isset($_REQUEST['gender']) && $gender != 'M' || (isset($_REQUEST['gender']) && $gender != 'F')
{ // Unacceptable value.
$gender = $_REQUEST['gender'];
$gender = NULL;
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
else
{ // $_REQUEST['gender'] is not set.
$gender = NULL;
echo '<p class="error">You forgot to select your gender!</p>';
}
我不确定是不是因为 $gender = $_REQUEST['gender'];
没有执行,但我们将不胜感激。
您正在检查变量 $gender
,然后再为其赋值。以下内容会有所帮助,
$gender = isset($_REQUEST['gender']) ? $_REQUEST['gender'] : "";
if ($gender == 'M')
{
echo '<p><b>Good day, Sir!</b></p>';
}
else if($gender == 'F')
{
echo '<p><b>Good day, Madam!</b></p>';
}
else if (!empty($gender) && ($gender != 'M' || $gender != 'F'))
{ // Unacceptable value.
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
else
{
echo '<p class="error">You forgot to select your gender!</p>';
}
这里的 switch 语句可能更简洁。
switch ($_REQUEST['gender']) {
case null:
echo '<p class="error">You forgot to select your gender!</p>';
break;
case 'M':
echo '<p><b>Good day, Sir!</b></p>';
break;
case 'F':
echo '<p><b>Good day, Madam!</b></p>';
break;
default:
echo '<p class="error">Gender should be either "M" or "F"!</p>';
}
这是我执行此操作的未经测试的方法。我也会先进行客户端 (javascript) 检查。我还假设你的性别字段是文本,如果是 select 你可以去掉 strtolower 和 trim.
<?php
if (empty($_REQUEST['gender']) || (strtolower(trim($_REQUEST['gender'])) != 'm' && strtolower(trim($_REQUEST['gender'])) != 'f')) {
//this should probably be checked client side for better usability, but better to check server side that we trust the data
echo '<p class="error">Please enter a valid Gender</p>';
} else {
$gender = strtolower(trim($_REQUEST['gender']));
echo '<p><b>Good day, ';
if ($gender == 'm') {
echo 'Sir!</b></p>';
} else {
echo 'Madam!</b></p>';
}
}