2012-01-11 44 views
23

可能重复:
PHP syntax for dereferencing function result调用PHP爆炸并访问第一个元素?

我有一个字符串,它看起来像1234#5678。现在我打电话这样的:

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

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

+3

这在PHP中不可行。 – 2012-01-11 11:26:36

+4

你将能够在PHP 5.4中执行此操作(Array Dereferencing),而不是当前的5.3 – 2012-01-11 15:15:42

回答

26

当前PHP版本中不支持数组解引用(不幸)。但是你可以用list[docs]直接指定数组元素的变量:

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

UPDATE

由于PHP 5.4(发布01-MAR-2012),它支持array dereferencing

+3

,如果你在字符串中有很多值,那么你可以使用 $ last = end(explode('#',$ string)); – 2013-02-26 11:11:06

+0

列表的替代是'list(,$ last)= ....'。那么当你不需要它时,你将不会有第一个变量挂起。 – 2017-11-16 20:30:21

8

最可能的PHP会被语法混淆。只是explode结果分配给数组变量,然后在其上使用索引:

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

哇,这很糟糕:D ...好的,现在我知道了。 – EOB 2012-01-11 11:28:02

+0

snap!你会赢得:) – 2012-01-11 11:28:08

3

PHP可以稍微变暗。您可能需要在两行上执行此操作:

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

你不能做到这一点:

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

因为explode是一个函数,而不是一个数组。它肯定会返回一个数组,但是在PHP中,您不能将该函数视为数组,直到它被设置为数组。

这是如何做到这一点:

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

这里是如何得到它归结为一条线:

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

哪里indx是你在数组中想要的指数,在你例如它是1.