簡體   English   中英

PHP替代if(!isset(…)){…} => GetVar($ Variable,$ ValueIfNotExists)

[英]PHP Alternative to if (!isset(…)) {…} => GetVar($Variable, $ValueIfNotExists)

當我在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");
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>";

輸出:

一個NotSet
值= 8
存在

b存在
值= ValueForB
b存在

c未設定
值= StandardValue3
c存在

d存在
值= ValueForD
d存在

當您運行PHP7時,可以使用null合並運算符
喜歡:

$myVar = $myVar ?? 0;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM