2017-08-07 108 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