第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

多資產(chǎn)或條件

多資產(chǎn)或條件

PHP
飲歌長嘯 2023-05-12 15:12:20
isset可用于檢查多個(gè)變量是否全部設(shè)置:if (isset($var1, $var2, $var3)) {...}但是如果我想檢查是否設(shè)置了任何變量怎么辦?if (isset($var1) || isset($var2) || isset($var3)) {...}鑒于使用@錯(cuò)誤抑制被認(rèn)為是不好的做法,有沒有比這更好的方法?function orset(){    foreach (func_get_args() as $arg) {        if (isset($arg)) return true;    }    return false;}if (orset(@$var1, @$var2, @$var3)) {...}
查看完整描述

3 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

我想出了檢查是否設(shè)置了任何變量的新想法。然而,正如 deceze 提到的那樣,這是不可能的,但這種方式更容易列出您要檢查的所有變量。但這仍然不是實(shí)現(xiàn)它的非常優(yōu)雅的方法,因?yàn)闆]有很好的方法來做到這一點(diǎn)。

null在鏈的末尾返回很重要,因?yàn)樗鼤云渌绞斤@示不存在的數(shù)組元素的通知。

$var3 = 'test';

$var4['4'] = false;

$var4['3'] = null;


var_dump(!is_null($var1 ?? $var2 ?? $var3 ?? $var4['4'] ?? null)); //true

var_dump(!is_null($var1 ?? $var2 ?? $var3 ?? null)); //true

var_dump(!is_null($var1 ?? $var2 ?? null)); //false

var_dump(!is_null($var1 ?? $var2 ?? $var4['3'] ?? null)); //false

var_dump(!is_null($var1 ?? $var2 ?? $var4['5'] ?? null)); //false


查看完整回答
反對 回復(fù) 2023-05-12
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

isset如果變量null根本不存在,則在抑制通知時(shí)檢查變量是否存在。


無法創(chuàng)建像isset. 用戶定義的函數(shù)只能接受值,不能接受“變量”。該值必須在調(diào)用方解析,因此一個(gè)不存在的變量將始終在那里生成一個(gè)通知,并且您的函數(shù)無法執(zhí)行任何操作來抑制它。isset是一種“語言構(gòu)造”,它更像是一個(gè)運(yùn)算符而不是一個(gè)函數(shù),并且沒有辦法模仿它在用戶態(tài)代碼中的作用。在某些特殊情況下,您可以實(shí)施一些解決方法,例如使用全局變量,但在其他情況下這些方法將失敗,例如當(dāng)您不使用全局變量時(shí)。


從根本上說,您一開始就不必過多地處理不存在的變量。您的代碼完全控制它創(chuàng)建的變量,因此如果您定義變量,則無需檢查它們是否存在。任何動態(tài)的東西都應(yīng)該作為數(shù)組或?qū)ο髠鬟f,例如用戶輸入通過$_GET或$_POST或其他可以作為對象傳遞的數(shù)據(jù)結(jié)構(gòu)。然后你不再談?wù)搃sset,而是關(guān)于測試數(shù)組中鍵的存在,例如,這可以簡化,例如:


if (array_intersect_key($array, array_flip(['foo', 'bar', 'baz']))) {

    echo 'At least one of those keys was in $array';

}

因此,避免陷入需要首先檢查是否設(shè)置了某些變量的情況。如果您不可避免地處于這種情況,那么isset || isset || ....


查看完整回答
反對 回復(fù) 2023-05-12
?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

我不完全確定這是否是解決此問題的最佳方法......您可以只將變量名傳遞給函數(shù)而不是變量。


//$var1 = 1;

//$var2 = 2;

//$var3 = 3;


function orset()

{

    foreach (func_get_args() as $arg) {       

        global ${$arg};        

        if (isset(${$arg})) {

            return true;

        }

    }


    return false;

}


if (orset('var1', 'var2', 'var3')) {

    echo "ok"; 

}

為什么要抑制錯(cuò)誤?將未定義的變量傳遞給函數(shù)應(yīng)該產(chǎn)生一個(gè)通知。如果您忘記了抑制錯(cuò)誤(您應(yīng)該這樣做),您可以使用:


function orset()

{

    foreach (func_get_args() as $arg) {       

        global $arg;        

        if (isset($arg)) {

            return true;

        }

    }


    return false;

}


if (orset($var1, $var2, $var3)) {

    echo "ok"; 

}

當(dāng)您可以簡單地使用 if (isset($var1) || isset($var) ....


查看完整回答
反對 回復(fù) 2023-05-12
  • 3 回答
  • 0 關(guān)注
  • 162 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號