【问题标题】:How to directly use an array returned by a function [duplicate]如何直接使用函数返回的数组[重复]
【发布时间】:2011-12-15 09:37:11
【问题描述】:

可能重复:
Interpreting return value of function directly as an array

有没有办法可以使用以下内容?

$year = getdate()["year"];??

如果我的函数返回一个数组,我可以在不写另一行的情况下读取该值吗?

感谢您的帮助!

【问题讨论】:

  • 你不能,但它很快就会到来。这也是其他几个问题的重复。当我找到合适的时会投票关闭
  • @Phil 这现在是可能的(我改变了我的答案),如果 OP 不接受我的或某人的正确答案,我认为我们应该删除这个问题。

标签: php arrays function return


【解决方案1】:

你为什么要关心一行? 做吧:

$yearprep = getdate();
$year = $yearprep['year'];

或者只是让函数返回“年份”

【讨论】:

  • +1 务实。仅供参考getdate()built-in function
  • 这是可用性问题。我知道我能做到……
【解决方案2】:

是的,你可以在不写换行符的情况下做到这一点......

$year = getdate(); $year = $year['year'];

从 PHP 5.4 开始可以这样做:

function fruits()
{
    return array('a' => 'apple', 'b' => 'banana');
}

echo fruits()['a']; # apple

称为数组解引用

【讨论】:

  • 我很喜欢你的回答...
  • 我不是反对者,但你知道 OP 在问什么。如果您想看喜剧,请将其放在评论中,而不是答案中。
  • 我知道我回答了echo $year['year'] = $year = getdate();,但那是错误的(没有清楚地思考)并且我投了反对票,所以我改变了答案。不过我可以删除它...@Josh,谢谢 :)
  • 那么我很抱歉。我以为你只是在讽刺!该死的互联网,没有音调!
  • 感谢更新 webarto.. 我接受你的回答 :)
【解决方案3】:

这个呢?只需要一行。

$date = date('Y');

See this codepad for results

【讨论】:

    【解决方案4】:

    如果你愿意,你可以做一个代理功能:

    function getPiece($key = 'year')
    {
        $tempYear = getDate();
        return $tempYear[$key];
    }
    
    echo getPiece();
    echo getPiece('day');
    

    【讨论】:

    • function getPiece($function, $key){$t = $function();return $t[$key];} 这可能会更好? +1 想法。
    • @webarto:很好的调用,这将允许使用任何函数,而不仅仅是 getDate();
    • Josh,我想将它与一些内置功能一起使用。谢谢你的帮助..
    • @Moiz:正如 webarto 所暗示的,您所要做的就是让代理函数调用可变定义的函数,然后您可以使用它来调用任何内置或用户定义的函数。
    【解决方案5】:

    答案是否定的。

    如果你真的想在一行中完成,你可以使用extract 构造:

    extract(getdate());
    

    或者正如 middus 所说,只需使用日期函数

    $year = date('Y');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2019-10-20
      • 2020-04-10
      • 2011-09-19
      • 1970-01-01
      • 2018-10-02
      相关资源
      最近更新 更多