将元素添加到关联数组会引发错误-PHP

时间:2019-02-01 09:59:37

标签: php

我的数据库中有一个json编码的数组,我想向其中添加元素。来自数据库的json看起来像这样:

{"1549006986":"a27f51b4dba8899c7a278465a873449a"}

以下是我要添加元素的代码:

$tokenarray = json_decode($_SESSION['logintoken']);

$counttokens = count($tokenarray);

$newtoken = md5(mt_rand());

$datetime = $_SERVER['REQUEST_TIME'];

if ($counttokens < 6){

    $tokenarray += [$datetime => $newtoken];

    }

$tokenarrayjson = json_encode($tokenarray);

但是这行

$tokenarray += [$datetime => $newtoken];

最终出现此错误:

Fatal error: Uncaught Error: Unsupported operand types in **SITEURL** Stack trace: #0 {main} thrown in **SITEURL** on line

有人可以告诉我这里错了吗?从该站点上的另一篇文章中,将类似元素添加到数组应该从php版本5.4开始有效。我在7.2上运行

有关事项

3 个答案:

答案 0 :(得分:2)

您的问题是您致电json_decode。由于尚未将第二个参数传递为true,因此它返回一个对象,然后尝试将该对象用作数组,从而导致您看到的错误。如果您在print_r($tokenarray);之后的代码中放置了json_decode,您将看到以下内容:

stdClass Object ( 
    [1549006986] => a27f51b4dba8899c7a278465a873449a
)

要解决此问题,请更改:

$tokenarray = json_decode($_SESSION['logintoken']);

$tokenarray = json_decode($_SESSION['logintoken'], true);

您的代码中也有错字,

newtoken = md5(mt_rand());

应该是

$newtoken = md5(mt_rand());

答案 1 :(得分:-1)

使用此

$tokenarray[$datetime] = $newtoken;

答案 2 :(得分:-1)

我想您的newtoken声明有问题。

newtoken = md5(mt_rand());

您忘记将$放在newtoken变量之前