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

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

如何在php中傳遞數(shù)組中的多個函數(shù)參數(shù)?

如何在php中傳遞數(shù)組中的多個函數(shù)參數(shù)?

PHP
慕的地6264312 2022-12-23 12:24:00
我想將多個參數(shù)傳遞給數(shù)組中的函數(shù)。參數(shù)本身是字符串?dāng)?shù)組。我有一個名為 的函數(shù)new_action(),我通過以下方式調(diào)用它:new_action(array('actions' => array('ACTION1','ACTION2'), 'tables' => array('table1','table2')));該功能如下所示:public function new_action($params=array()) {  $tables = array();  $actions = array();  if(count($params)) {    foreach($params as $k => $v) {      $tables  = ($k == 'tables')  ? $v : array();      $actions = ($k == 'actions') ? $v : array();    }    // Do useful stuff with the variables here ...    var_dump($tables);    var_dump($actions);    // ======== ACTUAL OUTPUT: ========    // array(0) { }    // array(0) { }    // ======== EXPECTED OUTPUT: ========    // array(2) { [0]=> string(6) "table1" [1]=> string(6) "table2" }    // array(2) { [0]=> string(7) "ACTION1" [1]=> string(7) "ACTION2" }  } }如您所見,$v循環(huán)內(nèi)(字符串?dāng)?shù)組)的值永遠(yuǎn)不會被復(fù)制到變量$tables或$actions循環(huán)外。我認(rèn)為這很可能是范圍問題,但查看與此類似的其他問題的答案并沒有為我闡明解決方案。我如何重構(gòu)代碼,以便我可以訪問存儲在循環(huán)外的$v每個數(shù)組?$kforeach
查看完整描述

3 回答

?
慕沐林林

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

您的代碼正在覆蓋之前設(shè)置的內(nèi)容,因?yàn)槟鷮⒅翟O(shè)置為array()當(dāng)鍵不匹配tables或時actions。所以當(dāng) $k == 'tables',$actions被設(shè)置回一個空數(shù)組。


取而代之的是三元運(yùn)算符,基本上是一個if/else, 重構(gòu)為只是一個if如果你想保持循環(huán):


foreach($params as $k => $v) {

        if ($k == 'tables') {

            $tables = $v;

        }

        if ($k == 'actions') {

            $actions = $v;

        }


    }

或者它可以通過在開始時顯式檢查這些鍵而不是循環(huán)來壓縮一點(diǎn):


function new_action($params=array()) {


    $tables = isset($params['tables']) ? $params['tables'] : array();


    $actions = isset($params['actions']) ? $params['actions'] : array();


    // Do useful stuff with the variables here ...

    var_dump($tables);

    var_dump($actions);


}


查看完整回答
反對 回復(fù) 2022-12-23
?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個贊

這些值是空的,因?yàn)槭褂?foreach 會覆蓋現(xiàn)有值。


您甚至可以將其編寫得更簡單,并使用帶括號的數(shù)組速記語法來提高可讀性。


空合并運(yùn)算符是避免書寫的語法糖,isset()也是三元的。如果已設(shè)置,它將返回其內(nèi)容,否則設(shè)置為空數(shù)組。


new_action(['actions' => ['ACTION1', 'ACTION2'], 'tables' => ['table1', 'table2']]);


function new_action($p = array()): void {

    $tables  = $p['tables']  ?? [];

    $actions = $p['actions'] ?? [];


    var_dump($tables);

    var_dump($actions);

}


array(2) { [0] => string(6) "table1" [1] => string(6) "table2" }

array(2) { [0] => string(7) "ACTION1" [1] => 字符串(7)“ACTION2”}


查看完整回答
反對 回復(fù) 2022-12-23
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個贊

您實(shí)際上不需要 foreach 來獲取該輸出:


public function new_action($params = array()) {

  $tables = array_key_exists('tables', $params) ? $params['tables'] : [];

  $actions = array_key_exists('actions', $params) ? $params['actions'] : [];


  // Do useful stuff with the variables here ...

  var_dump($tables); // Outputs => array(2) { [0]=> string(6) "table1" [1]=> string(6) "table2" }

  var_dump($actions); // Outputs => array(2) { [0]=> string(7) "ACTION1" [1]=> string(7) "ACTION2" }

  } 

}


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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