php - 将元素添加到关联数组会引发错误 - 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 上运行
问候安德烈亚斯
解决方案
您的问题是您对json_decode
. 因为您没有将第二个参数作为 true 传递,所以它返回一个对象,然后您尝试将其用作数组,从而导致您看到的错误。如果您print_r($tokenarray);
在 之后的代码中添加了a 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());
推荐阅读
- android - 从两个片段在列表视图中添加新项目
- android - 带有 Git 的 Android Studio:在本地更改窗口默认更改列表中显示的已拉更改?
- c++ - 对于采用可复制和可移动类的访问者,应该有多少重载?
- sql - 如何遍历 JSON 对象的 JSON 数组以查看它是否包含我在 postgres 中查找的值?
- python - Python SQL 到 Pandas DataFrame 2
- wordpress - 这个网站上的动画元素是什么?
- django - 姜戈 | 工厂男孩 | 伪造一个布尔字段| django.db.utils.DataError: value too long for type character varying(1)
- c - select() 和 read() 在串行端口读取时超时但之前的 write() 成功了吗?
- apache-kafka - Kafka Streams “Suppressed” 功能导致 OOM / 大量 GC
- flutter - 如何修复“缩小:aq
“颤动网页错误