用PHP回应一个或另一个

时间:2014-05-05 22:46:00

标签: php echo

如果我想回显空白的值,那么我会做点什么

<?php echo $a ? $a : 'blank'; ?>

但我想知道你是否可以使用像

这样的语法
<?php echo $a or 'blank'; ?>

但这会回显10

我想要它做的是模拟第一个代码块。换句话说,第一个代码块是否有一个简写:echo empty($a) ? $a : 'blank';

这个问题的灵感来自于您可以撰写$fp = fopen('file.txt') or die('bad file')

更新:我想我可以这样做:

<?php
    or_echo($a, 'blank');

    function or_echo($arg1, $arg2) {
        if(!empty($arg1)) {
            echo $arg1; return;
        }
        else {
            echo $arg2; return;
        }
        return;
    }
?>

3 个答案:

答案 0 :(得分:0)

不,没有(至少没有以某种方式抑制错误)。在大多数语言中,尤其是像PHP这样的动态类型语言,你可以沿着这些方向做点什么:

echo $_GET['message'] || 'blank';

当然,PHP以代码清晰度的名义放弃了这一点。

关于您的更新,不,您不能。在$_GET['message']时,访问!array_key_exists('message', $_GET)是一个警告。但是,这可行:

function get($key, $default) {
    return isset($_GET[$key]) ? $_GET[$key] : $default;
}

echo get('message', 'blank');

答案 1 :(得分:0)

这可能不是短手,但它使用or运算符来实现同样的目标。

$a = '';
//$a = 'hi';

$a or $a = 'blank';
echo $a;

一个班轮:

 <?php $a or $a = 'blank'; echo $a ?> 

答案 2 :(得分:0)

你可以这样做:

<?php echo isset($a) ?: 'blank'; ?>

这类似于<?php echo $a ? $a : 'blank'; ?>