You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OneSignal网页通知报错:无法将获取的URL数据插入数组

排查与解决方案

嘿,我梳理了你的问题:你已经成功从URL拿到了一个关联数组,但要么没法把dummy1、dummy2插入这个数组,要么是没法用数组里的真实值替换掉JSON模板里的dummy1、dummy2和[id]占位符?我分两种场景给你解决方案:

场景1:把dummy1、dummy2插入到已获取的数组中

如果你的需求是给现有的数组新增这两个值,那直接用PHP的数组赋值就行,超简单:

// 假设你拿到的数组存在$fetchedData变量里
$fetchedData['contents_en'] = 'dummy1';
$fetchedData['headings_en'] = 'dummy2';

要是这么做还失败,你可以检查这几点:

  • 先var_dump($fetchedData)看看数组是不是真的存在,有没有被意外覆盖成其他类型(比如字符串、null)
  • 确认这个数组不是只读的(比如有没有用const或者readonly修饰)
  • 检查键名有没有重复,要是数组里已经有contents_en这个键,那就是覆盖而不是新增了

场景2:用数组数据填充JSON模板

从你给出的JSON来看,里面的dummy1、dummy2和[id]明显是占位符,需要替换成数组里的真实内容对吧?按这个步骤来:

第一步:把JSON模板转成PHP数组

先把JSON字符串转成可操作的数组:

$jsonTemplate = '{"app_id":"35fi6c27-5f39-4s9f-94db-79bf123g0f9","included_segments":["All"],"data":{"foo":"bar"},"contents":{"en":"dummy1"},"headings":{"en":"dummy2"},"url":"http:\/\/www.gggg.in\/view.php?id=[id]"}';
$jsonArray = json_decode($jsonTemplate, true);

第二步:替换占位符

用你拿到的数组值替换掉模板里的占位:

// 还是假设数组存在$fetchedData里
$jsonArray['contents']['en'] = $fetchedData['content']; // 把dummy1换成数组里的content内容
$jsonArray['headings']['en'] = $fetchedData['headings']; // 把dummy2换成数组里的headings标题
$jsonArray['url'] = str_replace('[id]', $fetchedData['id'], $jsonArray['url']); // 替换URL里的[id]为真实ID

第三步:转回JSON准备发送

最后把修改后的数组转成JSON字符串:

$finalJson = json_encode($jsonArray, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
// 之后就可以发送这个$finalJson了

要是这一步出问题,你可以:

  • 检查$fetchedData的键名是不是拼写对了,比如是不是headings还是heading,别打错字
  • 用var_dump($jsonArray)看看替换后的数组状态,确认占位符有没有被正确替换
  • 如果json_encode返回false,直接用json_last_error_msg()看具体报错,大概率是编码问题,加上JSON_UNESCAPED_UNICODE参数一般能解决

通用排查小技巧

不管哪种场景,都别凭感觉判断变量内容,直接用var_dump()或者print_r()输出变量的真实状态,能帮你快速定位问题!另外还要注意变量的作用域,比如如果是在函数里操作数组,要确保数组能被函数访问到(要么传参,要么用global声明)。

内容的提问来源于stack exchange,提问作者user2226832

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:07:44