我们以前都遇到过这种情况,需要在输入字段中打印变量,但不确定是否设置了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手册。
";//这是另一种选择isset($value) AND print($value);?>if语句的一个简单替代方法是使用AND,它几乎类似于三元操作符。考虑以下内容:
由于某些原因,这对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) : '';