我们以前都遇到过它,需要在输入字段中打印变量但不知道是否设置了var,就像这样。基本上这是为了避免电子警告。
<input value='<?php if(isset($var)){print($var);}; ?>'>
我怎么写这个更短?我可以介绍一个像这样的新功能:
<input value='<?php printvar('myvar'); ?>'>
但我没有成功编写printvar()函数。
答案 0 :(得分:66)
我的建议是创建一个issetor
函数:
function issetor(&$var, $default = false) {
return isset($var) ? $var : $default;
}
这将变量作为参数并返回它(如果存在)或默认值(如果不存在)。现在你可以做到:
echo issetor($myVar);
但在其他情况下也使用它:
$user = issetor($_GET['user'], 'guest');
从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。
“; //这是另一种选择 isset($ value)AND print($ value); ?&GT;if语句的简单替代方法,就像三元运算符一样,是使用AND。请考虑以下事项:
由于某种原因,这不适用于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) : '';