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

Mik*_*las 7 php arrays explode

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

例如,这不起作用:

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

但是这段代码确实:

$username = explode('.',$thread_user); 
$username = $username[1];
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*eod 6

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

  • 不,不完全是.相反,我认为这是决定不支持这种语法的最有用的后果之一. (4认同)
  • 实际上只是PHP语法不支持这一点.你只是说这是为了让人们检查他们的回报价值? (2认同)
  • James,你是完全正确的,因为PHP支持这种语法会增加另一层复杂性,因为在PHP中,一种软类型语言,你不能保证函数的返回类型.然而,在其他情况下,PHP的解析器确实允许这样的情况发生.在这些情况下,PHP只是尝试它可以管理的最接近的类型转换并抛出警告消息.尝试访问`$ userID [1]`,其中$ userID是一个整数. (2认同)

小智 5

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

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


Bri*_*acy 4

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

  • ^ 真正的答案。即使您编写一个返回不变数组的函数,您仍然无法索引该函数调用(詹姆斯的回答可能会让您相信),因为这只是语法不起作用的问题。 (2认同)