36

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

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

我怎样才能把这个写得更短?我可以引入这样的新功能:

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

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

4

11 回答 11

82

对于 PHP >= 5.x:

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

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

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

echo issetor($myVar);

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

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

对于 PHP >= 7.0:

从 PHP 7 开始,您可以使用null-coalesce 运算符

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

或在您的使用中:

<?= $myVar ?? '' ?>
于 2011-04-29T19:43:34.980 回答
11

另外一个选项:

<input value="<?php echo isset($var) ? $var : '' ?>">
于 2011-04-29T19:35:04.690 回答
2

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

更多详细信息在 php 手册中。

几乎类似于三元运算符的 if 语句的一个简单替代方法是使用 AND。考虑以下:

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

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

于 2015-08-31T09:15:04.370 回答
1
<input value='<?php @print($var); ?>'>
于 2011-04-29T19:31:27.087 回答
0

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

无论如何,这是您的函数 - 只有当 var 存在于全局范围内时,它才会起作用:

function printvar($name) {
    if(isset($GLOBALS[$name])) echo $GLOBALS[$name];
}
于 2011-04-29T19:30:14.000 回答
0

你可以做<?php echo @$var; ?>.Or <?= @$var ?>

于 2011-04-29T19:31:29.880 回答
0

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

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

这将允许您执行printvar($foo)or printvar($array['foo']['bar'])。但是,IMO 最好的方法是isset每次都使用。我知道这很烦人,但没有任何好的方法可以解决它。@不推荐使用。

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

于 2011-04-29T19:36:02.207 回答
0

这对我有用:

<?= isset($my_variable) ? $my_variable : $my_variable="Some Value"; ?>
于 2016-03-29T18:50:21.583 回答
-1
<input value='<?php printvar(&$myvar); ?>' />

function printvar(&$val) {
    if (isset($val)) echo $val;
}
于 2011-04-29T19:32:18.023 回答
-1

您还可以使用以下内容:

<input type="text" value="<?php echo @$var; ?>">//means if(isset($var)){ echo $var; }
于 2019-01-12T13:09:47.693 回答
-4
$var;
(isset($var)) ? (print $var) : '';

$var = 'hello var';
(isset($var)) ? (print $var) : '';
于 2011-04-29T19:31:04.417 回答