什么是PHP简写:如果v​​ar存在则为print var

bar*_*art 30 php var isset

我们以前都遇到过它,需要在输入字段中打印变量但不知道是否设置了var,就像这样.基本上这是为了避免电子警告.

<input value='<?php if(isset($var)){print($var);}; ?>'>
Run Code Online (Sandbox Code Playgroud)

我该怎么写这个更短?我可以介绍一个像这样的新功能:

<input value='<?php printvar('myvar'); ?>'>
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*kiC 69

对于PHP> = 5.x:

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

function issetor(&$var, $default = false) {
    return isset($var) ? $var : $default;
}
Run Code Online (Sandbox Code Playgroud)

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

echo issetor($myVar);
Run Code Online (Sandbox Code Playgroud)

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

$user = issetor($_GET['user'], 'guest');
Run Code Online (Sandbox Code Playgroud)

对于PHP> = 7.0:

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

$user = $_GET['user'] ?? 'guest';
Run Code Online (Sandbox Code Playgroud)

或者在您的使用中:

<?= $myVar ?? '' ?>
Run Code Online (Sandbox Code Playgroud)

  • @afuzzyllama:因为我需要传递一个可能未定义的变量.如果我遗漏了引用,它会给你一个未定义的变量通知;) (13认同)
  • 关于这个方法的一件事 - 将`issetor`称为`issetor($ var ['key'])`会将`key`注入`$ var`.在某些情况下,您最终可能会遇到意外行为,尤其是在您稍后迭代密钥时. (3认同)
  • 你为什么要参考电话?价值不够吗?此外,默认值是PHP中的关键字,不使用它作为函数名称可能是明智的.它在我的服务器上有奇怪的结果. (2认同)

Gal*_*len 11

另外一个选项:

<input value="<?php echo isset($var) ? $var : '' ?>">
Run Code Online (Sandbox Code Playgroud)