php echo仅当变量存在时


php echo only if variable is exist

我有两个变量

<?php 
    $male = $_GET["male"];
    $female = $_GET["female"];  
 ?>

我试图只在变量存在的情况下回显,所以我写了以下语句

<?php if ( $male && $female ) { ?>
    <h1>Welcome, <?php echo $male; ?> & <?php echo $female; ?></h1>
<?php } elseif ( $male ) { ?>
    <h1>Welcome, <?php echo $male; ?></h1>
<?php } elseif ( $female ) { ?>
    <h1>Welcome, <?php echo $female; ?></h1>
<?php } else { ?>
    <h1>Weclome</h1>
<?php } ?>

但是现在当$male$female存在时
elseif也是真的,我该如何修复它?

echo '<h1>Welcome';
$sep = array(', ', ' &amp; ');
foreach (array('male', 'female') as $param) {
    if ( isset($_GET[$param]) ) {
        echo array_shift($sep), htmlentities($_GET[$param]);
    }
}
echo '</h1>';

您可以使用isset()来测试变量是否存在或为空

if(isset($male)&&isset($male)){
<h1>Welcome, <?php echo $male; ?> & <?php echo $female; ?></h1>
}

您可以使用内爆。您还可以进行一些错误检查。

$greeting = array();
if (!empty($_GET["male"]))
    $greeting[] = $_GET["male"];
if (!empty($_GET["male"]))
    $greeting[] = $_GET["male"];
if (count($greeting) > 0)
    echo "<h1>Welcome, " . implode(" & ", $greeting) . "!</h1>";
else
    echo "<h1>Who's there?</h1>";

在elseif中不添加男性和女性。像这样:

<?php if ( $male && $female ) { ?>
    <h1>Welcome, <?php echo $male; ?> & <?php echo $female; ?></h1>
<?php } elseif ( $male && !$female ) { ?>
    <h1>Welcome, <?php echo $male; ?></h1>
<?php } elseif ( $female && !$male ) { ?>
    <h1>Welcome, <?php echo $female; ?></h1>
<?php } else { ?>
    <h1>Weclome</h1>
<?php } ?>