【问题标题】:Calling PHP explode and access first element? [duplicate]调用 PHP 爆炸并访问第一个元素? [复制]
【发布时间】:2012-02-07 18:12:04
【问题描述】:

可能重复:
PHP syntax for dereferencing function result

我有一个字符串,看起来像 1234#5678。现在我这样称呼:

$last = explode("#", "1234#5678")[1]

它不工作,有一些语法错误......但是在哪里?我期望的是$last 中的 5678。这在 PHP 中不起作用吗?

【问题讨论】:

  • 您将能够在 PHP 5.4 中执行此操作(数组取消引用),而不是在当前 5.3 中

标签: php string explode


【解决方案1】:

在当前的 PHP 版本中不能取消数组引用(很遗憾)。但是你可以使用list [docs]直接将数组元素赋值给变量:

list($first, $last) = explode("#", "1234#5678");

更新

自 PHP 5.4(2012 年 3 月 1 日发布)以来,它支持 array dereferencing

【讨论】:

  • 如果字符串中有很多值,则可以使用 $last = end(explode('#', $string));
  • 列表的备选是list(,$last) = ....。这样你就不会在不需要时挂第一个变量了。
【解决方案2】:

很可能 PHP 被语法弄糊涂了。只需将explode 的结果分配给数组变量,然后对其使用索引:

$arr = explode("#", "1234#5678");
$last = $arr[1];

【讨论】:

  • 哇,太糟糕了:D ...好吧,我现在知道了。
【解决方案3】:

以下是如何将其简化为一行:

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

indx 是您想要在数组中的索引,在您的示例中为 1。

【讨论】:

    【解决方案4】:

    你不能这样做:

    explode("#", "1234#5678")[1]
    

    因为explode 是一个函数,而不是一个数组。当然,它会返回一个数组,但在 PHP 中,您不能将函数视为数组,除非它被设置为数组。

    这是怎么做的:

     $last = explode('#', '1234#5678');
     $last = $last[1];
    

    【讨论】:

      【解决方案5】:

      PHP 可能有点暗淡。您可能需要在两行上执行此操作:

      $a = explode("#", "1234#5678");
      $last = $a[1];
      

      【讨论】:

        猜你喜欢
        • 2019-06-05
        • 2013-06-08
        • 2020-02-16
        • 1970-01-01
        • 2013-12-15
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 1970-01-01
        相关资源
        最近更新 更多