什么是PHP的简写:打印var如果var存在



我们以前都遇到过这种情况,需要在输入字段中打印变量,但不确定是否设置了var,就像这样。这基本上是为了避免出现e_warning。

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

我怎样才能写得更短?我可以像这样引入一个新函数:

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

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

For PHP>= 7.0:

从PHP 7开始,您可以使用空合并操作符:

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

或者在你的用法中:

<?= $myVar ?? '' ?>

For PHP>= 5.x:

我建议创建一个issetor函数:

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

接受一个变量作为参数,如果存在则返回该变量,如果不存在则返回默认值。现在你可以这样做:

echo issetor($myVar);

但也可以在其他情况下使用:

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

另一个选项:

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

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

详细信息请参见php手册。

if语句的一个简单替代方法是使用AND,它几乎类似于三元操作符。考虑以下内容:

";//这是另一种选择isset($value) AND print($value);?>

由于某些原因,这对echo()不起作用。我发现这非常有用!

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

这是你的函数-它只会工作,如果var存在于全局作用域:

function printvar($name) {
    if(isset($GLOBALS[$name])) echo $GLOBALS[$name];
}
<input value='<?php @print($var); ?>'>

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

目前PHP中没有任何东西可以做到这一点,而且您也无法真正在PHP中编写函数来做到这一点。您可以执行以下操作来实现您的目标,但是如果变量不存在,那么它也有定义变量的副作用:

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

这将允许您执行printvar($foo)printvar($array['foo']['bar'])。然而,在我看来,最好的方法是每次都使用isset。我知道这很烦人,但没有什么好办法。不建议使用@

详细信息请参见https://wiki.php.net/rfc/ifsetor

这对我有用:

<?= isset($my_variable) ? $my_variable : $my_variable="Some Value"; ?>
<input value='<?php printvar(&$myvar); ?>' />
function printvar(&$val) {
    if (isset($val)) echo $val;
}

您还可以使用以下命令:

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

最新更新