调用PHP explode并访问第一个元素?

26

可能重复:
PHP语法——取消引用函数结果

我有一个字符串,长这样:1234#5678。现在我正在调用这个函数:

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

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


4
你将能够在PHP 5.4中执行这个(数组解引用)操作,而当前的5.3版本则不支持。 - Gérald Croës
5个回答

33

在当前的PHP版本中,不可能进行数组解引用(很遗憾)。但是您可以使用list[文档]直接将数组元素赋值给变量:

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

更新

自PHP 5.4(发布于2012年3月1日)以来,它支持数组解引用


3
如果您在字符串中有多个值,那么可以使用以下代码: $last = end(explode('#', $string)); 该代码将返回字符串中最后一个以“#”符号分隔的值。 - Govind Totla
列表的替代方法是 list(,$last) = ....。这样当你不需要第一个变量时,它就不会存在了。 - Tyler Christian

13

很可能是PHP被语法所迷惑。只需将explode的结果分配给数组变量,然后在其上使用索引即可:

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

2
哇,那太糟糕了 :D ... 好的,好在我现在知道了。 - EOB

8

以下是将其简化为一行的方法:

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

这里的indx是您想要在数组中获取的索引,在您的示例中是1。


5

您不能这样做:

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

因为explode是一个函数,而不是一个数组。它确实返回一个数组,但在PHP中,您只能将该函数视为数组,直到它被设置到数组中。
这就是如何做到这一点:
 $last = explode('#', '1234#5678');
 $last = $last[1];

3

PHP可能有些晦涩难懂。你可能需要将其拆分为两行:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接