【问题标题】:Extracting the right part of PHP explode in one line [duplicate]提取PHP的正确部分在一行中爆炸[重复]
【发布时间】:2011-11-18 13:58:33
【问题描述】:

可能重复:
PHP syntax for dereferencing function result

这就是我的意思。目前我必须:

$str = "foo-bar";
$foo = explode("-",$str);
$foo = $foo[0];

我想做的是:

$str = "foo-bar";
$foo = explode("-",$str)[0];

但这是一个语法错误!还有另一种方法可以在一条线上完成吗?

编辑:只想说清楚我也希望能够做到

$str = "foo-bar-baz";
$bar = explode("-",$str)[1];

也是。

【问题讨论】:

标签: php


【解决方案1】:
list($foo) = explode('-', $str);

【讨论】:

  • +1 第一个回答
  • 如果你只在第一个索引之后很好,但是如果所需的项目是三个元素中的第二个呢?
  • 是的,我可以做任何索引
【解决方案2】:

或者你可以这样做:

$foo = array_shift(explode("-", $str));

[编辑] 由于问题已经改变,现在是一种非常肮脏的方式:

list(,$foo) = explode("-", $str); // Add as many commas as needed to get the proper index

【讨论】:

  • 我假设这仅适用于第一个索引?
  • 你的问题很不清楚。现在您希望能够访问任何索引。另外,您只是想在一行而不是两行中找到一种方法?
  • 是的,我只是想知道有没有可能,我不相信。
  • list(,$foo) = explode('-', $str);您可以添加尽可能多的逗号以获得​​所需的索引。这个例子将为您提供 [1]。这是一行,但是是的,这很脏。
【解决方案3】:

另一种选择:

$foo = current(explode("-", $str));

【讨论】:

  • 我假设这仅适用于第一个索引?
  • 是的,它只对第一个有效。这只是一种替代方式。但是,使用next 函数,您可以递增数组内部指针并将这种方法也用于其他元素。
【解决方案4】:
$foo = explode("-",$str) and $foo = $foo[0];

说真的:这没有简写符号。您可以通过几种不同的方式在一行中完成此操作,但没有一个像您已经拥有的两行解决方案那样具有描述性和简短性。

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多