设置变量默认值的最简洁方法

时间:2014-09-16 21:35:13

标签: php coding-style code-formatting

我正在使用PHP生成HTML,我有数据显示框的主要可选部分,它取决于框中显示的数据类型。这让我有了类似的代码:

if ($sLockIconHTML == "") {

    // Leave a space where the lock icon would have been.
    $sLockIconHTML = "<div class='user-task-box-right-action-icon'></div>";
}

替换字符串值的干净方法是什么,但仅当值为空字符串时才会这样做?

6 个答案:

答案 0 :(得分:1)

只需在脚本开头定义变量

$sLockIconHTML = "<div class='user-task-box-right-action-icon'></div>";
// Later no condition is needed the default is already there. 
// ...and the variable will not be undefined :)

或者如果您正在使用函数并且想要设置默认值:

function defaultFor(arg, val) {
  return typeof arg !== 'undefined' ? arg : val;
}
function newFunction(variable) {
  var variable = defaultFor(variable, defaultValue);
}

答案 1 :(得分:0)

必须有一个条件语句,以确定变量是否为空,或者在您的情况下分配了值

if ($sLockIconHTML == "") {

    // Leave a space where the lock icon would have been.
    $sLockIconHTML = "<div class='user-task-box-right-action-icon'></div>";
}

你的代码是正确的;你也可以试试

if (!isset($sLockIconHTML)) {

    // Leave a space where the lock icon would have been.
    $sLockIconHTML = "<div class='user-task-box-right-action-icon'></div>";
}

if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

答案 2 :(得分:0)

$sLockIconHTML = $sLockIconHTML ?: "<div class='user-task-box-right-action-icon'></div>";
如果没有值,将分配

$ sLockIconHTML。

此功能在PHP 5.3之后可用。

答案 3 :(得分:0)

您可以为此编写一个函数:

function default(&$str,$default)
{
  if ($str == '') $str = $default;
}

然后每一行都是:

default($sLockIconHTML,"<div class='user-task-box-right-action-icon'></div>");

答案 4 :(得分:0)

使用PHP 5.3或更高版本,您可以使用三元运算符:

                 /* User is not blank,    else:     vvv              */
$sLockIconHTML = ($sLockIconHTML != "" ?: "<div class='user-task-box-right-action-icon'></div>");

如果$sLockIconHTML为空,则值得注意的是1将等于$sLockIconHTML

答案 5 :(得分:0)

最简单的方法:

if ($var === "")
    $var = "data";

empty()

if (empty($var))
    $var = "data";

您不能像其他人所建议的那样使用isset(),因为它会在任何一种情况下都返回true 只有当你的变量不存在时才会出现错误。


一个功能:

function setVar(&$var, $data)
{
    if (empty($var))
        $var = $data;
}
setVar($var, "data");

可以与函数关联的

ternary operator

$var = (empty($var)) ? "data" : "";
$var = ($var == "") ? "data" : "";

这个有点棘手:

isset($var) || $var = "data";