2

无法绕开我的头......

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

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

但是,如果该值位于中间的某个位置怎么办?

4

4 回答 4

7

函数数组解引用已在 PHP 5.4 中实现。对于旧版本,这是此处修复的 PHP 解析器的一个限制,所以恐怕现在没有办法解决它。

于 2010-06-23T07:14:53.880 回答
1

类似的东西:

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

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

于 2010-06-23T07:16:26.547 回答
0

你可以使用list

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

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

list($first_element, $second_elment) = explode(',', $source);
// or
list(, $second_element) = explode(',', $source);
于 2010-06-23T07:19:07.840 回答
0

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

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

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

于 2010-06-23T11:03:07.323 回答