2017-08-07 110 views
3

首先,讓我開始說我是一個真正的初學者主要學習PHP。理解編程的模式和語義對我來說比僅僅學習語法更重要。我爲我要問的事做了一些研究,但我找不到任何有關它的信息。所以,我在想......如果我需要執行以下操作......給一個函數多個輸出傳遞給代碼的其他部分。這種類型的功能(如果存在的話)的名稱是什麼?或者如果它不存在,爲什麼不呢?實現相同語義的最佳實踐是什麼?功能與兩個輸出

更多細節: 比方說,我要調用一個函數只有一個參數和返回不但值回相同的參數調用的位置,而且在其他位置或進入程序的其它部分。這意味着一個函數在兩個不同位置有兩個輸出,但第二個位置不會是一個調用,只是第一個位置調用的輸出,同時以與第一個位置相同的值輸出返回。所以,不要單獨調用它兩次......而是調用一次並在不同位置輸出兩次。第二個輸出將用於將結果傳遞到程序的另一部分,因此不適合作爲「調用/輸入」,而更多地僅用於「輸入」值的「輸出」。我怎樣才能在功能上實現多個輸出?

如果這看起來像一個愚蠢的問題,我很抱歉。我無法在任何地方找到信息。在此先感謝

+3

沒有讀這一切,但'返回數組($ VAL1,VAL2 $);' – Andreas

+0

除了返回輸出數組,你可能會考慮通過引用傳遞的變量。有些語言可以讓你輕鬆地返回多個輸出,甚至不需要將它們包裝成一個數組(例如,python),但大多數語言不會。然而,許多語言都支持按引用傳遞,因此這有時是理想的解決方案,而不需要構造一個數組來包裝值。 – SpencerD

+0

我提出了@Andreas的評論。我建議'返回['val1'=> $ val1,'val2'=> $ val2];'並在調用此函數後使用'extract()'。 –

回答

0

如果問題是關於返回不止一個變量,它僅僅是:

function wtf($foobar = true) { 
    $var1 = "first"; 
    $var2 = "second"; 

    if($foobar === true) { 
     return $var2; 
    } 
    return $var1; 
} 
0

您可以有函數返回值的數組:

function foo($bar) { 
    $bat = 1; 
    return [$bar, $bat]; 
} 

或者你可以傳遞一個參數,告訴它哪個值返回:

function foo($bar, $return_bar=false) { 
    $bat = 1; 
    return $return_bar ? $bar : $bat; 
} 
3

你想做什麼我的基本屬於這個(我將使它成爲一個「實用」爲例):

function add($number1, $number2) 
{ 
    $result = $number1 + $number2; 

    return array('number1' => $number1,'number2' => $number2,'result' => $result); 
} 

$add = add(5,6); // Returns array('number1' => 5, 'number2' => 6, 'result' => 11); 

您現在有兩個參數和功能在您的處置結果在其他功能使用。

some_function1($add['result']); 
... 
some_function2($add['number1']); 
+0

哈哈。這比我想象的更簡單。謝謝! – Alex