【问题标题】:How to access array index when using explode() in the same line?在同一行中使用explode()时如何访问数组索引?
【发布时间】:2011-03-07 04:32:38
【问题描述】:

无法理解这个......

说,我们像这样爆炸整个事情:

$extract = explode('tra-la-la', $big_sourse);

然后我们想在索引 1 处获取一个值:

$finish = $extract[1];

我的问题是如何一口气搞定。类似的东西:

$finish = explode('tra-la-la', $big_sourse)[1]; // 不工作

像下面这样的东西就像一个魅力:

$finish = end(explode('tra-la-la', $big_sourse));

// 或

$finish = array_shift(explode('tra-la-la', $big_sourse));

但是如果值位于中间的某个位置呢?

【问题讨论】:

  • 我认为没有像您正在寻找的解决方案。之前为什么不想将提取的数据存储到数组中呢?为什么直接调用?内存节省问题?
  • 我只是喜欢带有 end 和 array_shift 的解决方案,所以如果值在中间,我想要类似的解决方案。但顺便说一句,内存也可能是个问题。
  • 我不认为这是一个骗局,但链接很重要。所以对你来说“很棒的评论”! ;)

标签: php arrays explode php-5.3 dereference


【解决方案1】:

Function Array Dereferencing 已在 PHP 5.4 中实现。对于旧版本,这是修复了in here 的 PHP 解析器中的一个限制,所以恐怕现在没有办法解决它。

【讨论】:

  • 最近修复了从函数调用中解引用数组?什么时候?
  • 我不知道它已被修复!您是否有指向此修复发布位置的链接?
  • 这还没有正式发布,是吗?
  • @Ignacio 你真的让我很高兴看到这个消息
  • 哇...这将改变我的整个 PHP 体验!不确定我是否准备好接受这样的改变;)
【解决方案2】:

类似的东西:

end(array_slice(explode('tra-la-la', $big_sourse), 1, 1));

虽然我不认为它比写成两行更好/更清晰/更漂亮。

【讨论】:

    【解决方案3】:

    你可以使用list:

    list($first_element) = explode(',', $source);
    

    [1] 实际上是数组中的第二个元素,不确定您是否真的是这个意思。如果是这样,只需将另一个变量添加到列表构造(如果愿意,则省略第一个)

    list($first_element, $second_elment) = explode(',', $source);
    // or
    list(, $second_element) = explode(',', $source);
    

    【讨论】:

    • 在有人尝试获取nth 元素之前,一切都很有趣和游戏。
    • @ignacio:好吧,那么最好保存数组,进行绑定检查,然后检索值。你总是可以为此编写另一个函数;)
    【解决方案4】:

    我的建议 - 是的,我已经想出办法了 - 将使用该功能允许的额外 agrument。如果设置为正,则返回的数组将包含最大限制元素,最后一个元素包含字符串的其余部分。因此,如果我们想获得索引 2 处的值(当然,我们确定我们想要的值会预先存在),我们只需按如下方式进行:

    $finish = end(explode('tra-la-la', $big_sourse, 3)); 
    

    explode 将返回一个最多包含三个元素的数组,因此我们“结束”到我们寻找的最后一个元素,索引为 2 - 我们完成了!

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2016-05-21
      • 1970-01-01
      相关资源
      最近更新 更多