什么是PHP简写:如果v​​ar存在则为print var

时间:2011-04-29 19:28:35

标签: php var isset

我们以前都遇到过它,需要在输入字段中打印变量但不知道是否设置了var,就像这样。基本上这是为了避免电子警告。

<input value='<?php if(isset($var)){print($var);}; ?>'>

我怎么写这个更短?我可以介绍一个像这样的新功能:

<input value='<?php printvar('myvar'); ?>'>

但我没有成功编写printvar()函数。

11 个答案:

答案 0 :(得分:66)

对于PHP&gt; = 5.x:

我的建议是创建一个issetor函数:

function issetor(&$var, $default = false) {
    return isset($var) ? $var : $default;
}

这将变量作为参数并返回它(如果存在)或默认值(如果不存在)。现在你可以做到:

echo issetor($myVar);

但在其他情况下也使用它:

$user = issetor($_GET['user'], 'guest');

对于PHP&gt; = 7.0:

从PHP 7起,您可以使用null-coalesce operator

$user = $_GET['user'] ?? 'guest';

或者在您的使用中:

<?= $myVar ?? '' ?>

答案 1 :(得分:10)

另一种选择:

<input value="<?php echo isset($var) ? $var : '' ?>">

答案 2 :(得分:3)

<input value='<?php @print($var); ?>'>

答案 3 :(得分:2)

我能提出的最短答案是<?php isset($var) AND print($var); ?>

更多详情请见here on php manual

  

if语句的简单替代方法,就像三元运算符一样,是使用AND。请考虑以下事项:

“;      //这是另一种选择      isset($ value)AND print($ value); ?&GT;

由于某种原因,这不适用于echo()。我发现这非常有用!

答案 4 :(得分:0)

最好使用合适的模板引擎 - https://stackoverflow.com/q/3694801/298479提到两个不错的模板引擎。

无论如何,这是你的功能 - 它只有在全局范围内存在var时才有效:

function printvar($name) {
    if(isset($GLOBALS[$name])) echo $GLOBALS[$name];
}

答案 5 :(得分:0)

您可以<?php echo @$var; ?>.<?= @$var ?>

答案 6 :(得分:0)

目前PHP中没有任何东西可以做到这一点,你也不能用PHP编写一个函数来做到这一点。您可以执行以下操作来实现目标,但如果变量不存在,它还具有定义变量的副作用:

function printvar(&$variable)
{
    if (isset($variable)) {
        echo $variable;
    }
}

这样您就可以printvar($foo)printvar($array['foo']['bar'])。但是,IMO的最佳方法是每次都使用isset。我知道这很烦人但是没有任何好办法。建议不要使用@

有关详细信息,请参阅https://wiki.php.net/rfc/ifsetor

答案 7 :(得分:0)

这对我有用:

<?= isset($my_variable) ? $my_variable : $my_variable="Some Value"; ?>

答案 8 :(得分:-1)

<input value='<?php printvar(&$myvar); ?>' />

function printvar(&$val) {
    if (isset($val)) echo $val;
}

答案 9 :(得分:-1)

您还可以使用以下内容:

<input type="text" value="<?php echo @$var; ?>">//means if(isset($var)){ echo $var; }

答案 10 :(得分:-4)

$var;
(isset($var)) ? (print $var) : '';

$var = 'hello var';
(isset($var)) ? (print $var) : '';