在同一行中使用explode()时如何访问数组索引?

时间:2010-06-23 07:11:30

标签: php arrays explode php-5.3 dereference

无法绕过这个......

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

  

$ 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 个答案:

答案 0 :(得分:7)

Function Array Dereferencing已在PHP 5.4中实现。对于旧版本,这是PHP解析器中的一个限制,它已被修复in here,所以我现在不用担心。

答案 1 :(得分:1)

类似的东西:

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

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

答案 2 :(得分:0)

您可以使用list

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

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

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

答案 3 :(得分:0)

我的建议 - 是的,我已经找到了一些东西 - 会使用一个额外的agrument允许该功能。如果设置为正数,则返回的数组将包含最多限制元素,最后一个元素包含其余字符串。所以,如果我们想要得到索引2处的值(当然,我们确定我们喜欢的值会预先存在),我们只需按以下步骤操作:

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

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