我们以前都遇到过,需要在输入字段中打印一个变量,但不确定是否设置了 var,就像这样。基本上这是为了避免出现 e_warning。
<input value='<?php if(isset($var)){print($var);}; ?>'>
我怎样才能把这个写得更短?我可以引入这样的新功能:
<input value='<?php printvar('myvar'); ?>'>
但是我没有成功编写 printvar() 函数。
我的建议是创建一个issetor
函数:
function issetor(&$var, $default = false) {
return isset($var) ? $var : $default;
}
这将变量作为参数并返回它(如果存在)或默认值(如果不存在)。现在你可以这样做:
echo issetor($myVar);
但也可以在其他情况下使用它:
$user = issetor($_GET['user'], 'guest');
从 PHP 7 开始,您可以使用null-coalesce 运算符:
$user = $_GET['user'] ?? 'guest';
或在您的使用中:
<?= $myVar ?? '' ?>
另外一个选项:
<input value="<?php echo isset($var) ? $var : '' ?>">
我能想到的最短答案是<?php isset($var) AND print($var); ?>
更多详细信息在 php 手册中。
'; // 这是另一种选择 isset( $value ) AND print( $value ); ?>几乎类似于三元运算符的 if 语句的一个简单替代方法是使用 AND。考虑以下:
由于某种原因,这不适用于 echo() 。我觉得这非常有用!
<input value='<?php @print($var); ?>'>
更好地使用适当的模板引擎 - https://stackoverflow.com/q/3694801/298479提到了两个不错的。
无论如何,这是您的函数 - 只有当 var 存在于全局范围内时,它才会起作用:
function printvar($name) {
if(isset($GLOBALS[$name])) echo $GLOBALS[$name];
}
你可以做<?php echo @$var; ?>.
Or <?= @$var ?>
。
目前 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。
这对我有用:
<?= 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) : '';