PHP语法错误,使用数组时意外'['

时间:2014-06-04 11:21:03

标签: php

我在下面使用以下代码:

$data = array();
$value = reset($value);
$data[0] = (string) $value->attributes()['data'];
------^

我在localhost中没有问题,但在其他主机中,当我检查代码时,我看到了这个错误:

  

解析错误:语法错误,意外情况' ['在 ....

我已经显示了代码导致错误的位置。

我也用过:

$data[] = (string) $value->attributes()['data'];

0中没有[]

我该如何解决?

2 个答案:

答案 0 :(得分:8)

Array Referencing was first added in PHP 5.4

来自PHP.net的代码:

<?php
function getArray() {
    return array(1, 2, 3);
}

// on PHP 5.4
$secondElement = getArray()[1];

// previously
$tmp = getArray();
$secondElement = $tmp[1];

// or
list(, $secondElement) = getArray();
?>

所以你必须改变

$data[] = (string)$value->attributes()['data'];

$attributes = $value->attributes();
$data[] = (string)$attributes['data'];

如果您的PHP版本早于5.4。

答案 1 :(得分:5)

问题在于这一行:

$value->attributes()['data'];

这是因为您使用的是不支持函数数组解除引用的PHP版本,该版本仅在PHP 5.4中添加

要绕过它,你必须先调用该方法,然后访问它的属性,例如:

$someVariable = $value->attributes();
$data[] = (string) $someVariable['data'];