Php 动态地将对象添加到阵列,在一台服务器上失败,而不是在另一台服务器上失败

Php 动态地将对象添加到阵列,在一台服务器上失败,而不是在另一台服务器上失败,php,arrays,json,object,dynamic,Php,Arrays,Json,Object,Dynamic,在我的本地服务器(运行PHP5.4.4)上,这可以工作: $json = array(); while ($row = $stmt->fetch_assoc()) { $json[] = ['id' => $row['id'] , 'username' => $row['username']]; } 在我的另一台服务器(运行php 5.3.28)上,我得到: 指的是那条线 原因可能是什么?我如何修复它?可能是动态添加到数组的另一种方法,因为只有PHP5.4+ 声

在我的本地服务器(运行PHP5.4.4)上,这可以工作:

$json = array();

while ($row = $stmt->fetch_assoc()) {

   $json[] = ['id' => $row['id'] , 'username' => $row['username']];

}
在我的另一台服务器(运行php 5.3.28)上,我得到:

指的是那条线


原因可能是什么?我如何修复它?可能是动态添加到数组的另一种方法,因为只有
PHP5.4+

声明从
PHP5.4
起可以使用较短的数组语法。这就是为什么您会收到错误消息,因为
[
PHP5.3中不受支持

要修复它,请使用常规语法:

while ($row = $stmt->fetch_assoc()) {
   $json[] = array('id' => $row['id'] , 'username' => $row['username']);
}

请注意,我不确定您是否正在使用mysqli,但在我看来,您正在做的是
->fetchAll
,因为您正在循环并无论如何构建一个数组。在PDO中有一个名为
$stmt->fetchAll(PDO::FETCH_ASSOC)的函数
这与循环的作用非常相似,您不必循环。

因为数组的简短语法仅在
PHP5.4+
中受支持

声明从
PHP5.4开始提供较短的数组语法。这就是为什么您会收到错误消息,因为
[
PHP5.3中不受支持

要修复它,请使用常规语法:

while ($row = $stmt->fetch_assoc()) {
   $json[] = array('id' => $row['id'] , 'username' => $row['username']);
}
请注意,我不确定您是否正在使用mysqli,但在我看来,您正在做的是
->fetchAll
,因为您正在循环并无论如何构建一个数组。在PDO中有一个名为
$stmt->fetchAll(PDO::FETCH_ASSOC)的函数
这与循环的作用几乎相同,您不必通过它进行循环。

类似这样的操作:

$count = 0;
while ($row = $stmt->fetch_assoc()){
    $json[$count]['id'] = $row['id'];
    $json[$count]['username'] = $row['username'];
    $count++;
}
大概是这样的:

$count = 0;
while ($row = $stmt->fetch_assoc()){
    $json[$count]['id'] = $row['id'];
    $json[$count]['username'] = $row['username'];
    $count++;
}

啊,我明白了。我会试试的。现在我的主机很快就要更新php了(他们害怕失去safemode lol);)谢谢PDO。是的,我花了好几天时间研究PDO和mySQLi。我最终选择了mySQLi(来自普通mysql)我可能会留在那里,尽管PDO有一些很好的功能,mysqli的准备工作可能会是一场恐怖的表演……但也许有一天我认为mysql/I也有这个选项:echo json_encode($conn->query('SELECT id,name FROM the table')->fetch_all(mysqli_ASSOC));啊,我明白了。我会尝试一下。现在我的主机很快就要更新php了(他们害怕失去安全模式lol);)谢谢PDO。是的,我花了好几天时间研究PDO和mySQLi。我最终得到了mySQLi(来自普通mysql)我可能会留在那里,尽管PDO有一些很好的功能,mysqli的准备工作可能会是一场恐怖的表演……但也许有一天我认为mysql/I也有这个选项:echo json_encode($conn->query('SELECT id,name FROM the table')->fetch_all(mysqli_ASSOC));