为什么我不能立即访问爆炸的数组元素?

时间:2010-02-15 21:43:54

标签: php arrays explode

为什么我不能立即访问explode()返回的数组中的元素?

例如,这不起作用:

$username = explode('.',$thread_user)[1]; 
//Parse error: syntax error, unexpected '[

但是这段代码确实:

$username = explode('.',$thread_user); 
$username = $username[1];

我通常不用PHP编程,所以这对我来说相当混乱。

6 个答案:

答案 0 :(得分:6)

不明显如何做你想做的事情的原因是explode可以返回false。您应该在索引之前检查返回值。

答案 1 :(得分:5)

它取决于版本。 PHP 5.4 支持访问返回的数组。

来源:http://php.net/manual/en/language.types.array.php#example-115

答案 2 :(得分:4)

实际上,PHP根本不支持这种语法。在像Javascript这样的语言中(例如),解析器可以处理更复杂的嵌套/链接操作,但PHP不是这些语言之一。

答案 3 :(得分:2)

由于explode()返回一个数组,您可以使用其他函数,例如$username = current(explode('.',$thread_user));

答案 4 :(得分:1)

我只使用自己的功能:

function explodeAndReturnIndex($delimiter, $string, $index){
    $tempArray = explode($delimiter, $string);
    return $tempArray[$index];
}

您的示例的代码将是:

$username = explodeAndReturnIndex('.', $thread_user, 1);

答案 5 :(得分:1)

以下是如何将其归结为一行:

$username = current(array_slice(explode('.',$thread_user), indx,1));

其中indx是爆炸数组所需的索引。我是php的新手,但我喜欢说爆炸阵列:)