具有两个输出的函数

时间:2017-08-07 17:04:54

标签: php function

首先,让我首先说我是一个真正的初学者,主要学习PHP。理解编程的模式和语义对我来说比学习语法更重要。我对我要问的内容做了一些研究,但我找不到任何有关它的信息。所以,我在想...如果我需要执行以下操作...给函数多个输出以传递代码的其他部分。这种功能的名称是什么(如果存在)?或者如果它不存在,为什么不呢?什么是实现相同语义的最佳实践?

更多详情: 让我们说我想用一个参数调用一个函数,并且不仅将值返回到同一个参数调用位置,而且还返回到另一个位置或程序的其他部分。意味着在两个不同位置具有两个输出的功能,但第二个位置不是呼叫,只是在第一个位置进行的呼叫的输出,同时以与第一个相同的值输出返回。所以,不要单独调用它两次......而是调用一次并在不同位置输出两次。第二个输出将用于将结果传递到程序的另一部分,因此不适合作为"呼叫/输入",而更多的是作为"输出"仅来自"输入"值。如何在函数中实现多个输出?

如果这似乎是一个愚蠢的问题,我很抱歉。我无法在任何地方找到这些信息。提前致谢

3 个答案:

答案 0 :(得分:3)

你想要做的基本上是这样的(我将把它作为一个实用的例子):

from datetime import datetime

df = pd.DataFrame({'date': ['2017-04-12', '2017-04-13'], 
                   'time': ['17:30:18.733', '07:30:18']})


def date_parser(date_string):
    try:
        timestamp = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S.%f')
        timestamp = timestamp.strftime('%a, %d %b %Y %H:%M:%S %f')[:-3]
    except ValueError:
        timestamp = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
        timestamp = timestamp.strftime('%a, %d %b %Y %H:%M:%S 000')
    return timestamp

df['datetime_str'] = (df['date'] + ' ' + df['time']).apply(lambda x: date_parser(x))

>>> df
         date          time                   datetime_str
0  2017-04-12  17:30:18.733  Wed, 12 Apr 2017 17:30:18 733
1  2017-04-13      07:30:18  Thu, 13 Apr 2017 07:30:18 000

现在您可以使用这两个参数和该函数的结果,以便在其他函数中使用。

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);

答案 1 :(得分:0)

如果问题是关于返回多个变量,那么它只是:

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

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

答案 2 :(得分:0)

您可以让函数返回值数组:

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

或者您可以传递一个参数,告诉它返回哪个值:

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