PHP 替代 if (!isset(...)) ... => GetVar($Variable, $ValueIfNotExists)

Posted

技术标签:

【中文标题】PHP 替代 if (!isset(...)) ... => GetVar($Variable, $ValueIfNotExists)【英文标题】:PHP Alternative to if (!isset(...)) ... => GetVar($Variable, $ValueIfNotExists)PHP 替代 if (!isset(...)) ... => GetVar($Variable, $ValueIfNotExists) 【发布时间】:2018-09-07 22:35:12 【问题描述】:

当我在 php 中使用不存在变量时,我会收到警告/错误消息。

注意:未定义的变量

所以通常我会先写一个 if 语句来初始化它。

示例 1:

if (!isset($MySpecialVariable))

  $MySpecialVariable = 0;

$MySpecialVariable++;

示例 2:

if (!isset($MyArray["MySpecialIndex"]))

  $MyArray["MySpecialIndex"] = "InitialValue";

$Value = $MyArray["MySpecialIndex"];

缺点是要写$MySpecialVariable$MyArray["MySpecialIndex"]好几次,程序会臃肿。 如何通过仅一次编写变量来获得相同的结果? 我正在寻找类似的东西

GetVar($MySpecialVariable, 0); # Sets MySpecialVariable to 0 only if not isset()
$MySpecialVariable++;

$Value = GetVar($MyArray["MySpecialIndex"], "InitialValue");

【问题讨论】:

【参考方案1】:

当您运行 PHP7 时,您可以使用 null coalescing operator 喜欢:

$myVar = $myVar ?? 0;

【讨论】:

【参考方案2】:
function GetVar(&$MyVar, $ValueIfVarIsNotSet)

    $MyVar = (isset($MyVar)) ? $MyVar : $ValueIfVarIsNotSet;
    return $MyVar;

关键是通过引用(&$MyVar)传递请求的变量。否则,不可能调用带有可能未初始化变量的函数。

测试代码:

echo "<pre>";

unset($a);
$b = "ValueForB";
unset($c);
$d = "ValueForD";

echo (isset($a)) ? "a exists" : "a NotSet";
$a = GetVar($a, 7); # $a can be passed even if it is not set here
$a++;
echo "\nValue=$a\n";
echo (isset($a)) ? "a exists" : "a NotSet";
echo "\n\n";

echo (isset($b)) ? "b exists" : "b NotSet";
echo "\nValue=".GetVar($b, "StandardValue2")."\n";
echo (isset($b)) ? "b exists" : "b NotSet";
echo "\n\n";

echo (isset($c)) ? "c exists" : "c NotSet";
echo "\nValue=".GetVar($c, "StandardValue3")."\n";
echo (isset($a)) ? "c exists" : "c NotSet";
echo "\n\n";

echo (isset($d)) ? "d exists" : "d NotSet";
echo "\nValue=".GetVar($d, "StandardValue4")."\n";
echo (isset($d)) ? "d exists" : "d NotSet";
echo "\n\n";

echo "</pre>";

输出:

一个未设置 值=8 存在 b 存在 Value=ValueForB b 存在 c 未设置 值=标准值3 c 存在 d 存在 Value=ValueForD d 存在

【讨论】:

以上是关于PHP 替代 if (!isset(...)) ... => GetVar($Variable, $ValueIfNotExists)的主要内容,如果未能解决你的问题,请参考以下文章

php 'ISSET' 功能不起作用。或者代码跳过我的 if 语句

PHP if(isset)JavaScript等效项

php中如何看一条函数式。如if(isset(........)我就知道if是如果的意思

PHP IF 语句问题与 isset 和 !empty

php isset — 检测变量是否设置

PHP 中数组函数 isset 效率比 array_key_exists 更高