为什么我不能立即访问explode()
返回的数组中的元素?
例如,这不起作用:
$username = explode('.',$thread_user)[1];
//Parse error: syntax error, unexpected '[
但是这段代码确实:
$username = explode('.',$thread_user);
$username = $username[1];
我通常不用PHP编程,所以这对我来说相当混乱。
答案 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的新手,但我喜欢说爆炸阵列:)