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

PHP接收FormData传递的JSON数组异常,如何转换为指定格式字符串?

PHP接收FormData传递数组的坑与解决办法

我在项目开发中遇到了一个问题:前端通过FormData传递数组,PHP端无法识别为数组,最终需要将该数组转换为yemen&america&france&germany格式的字符串。

前端代码

searcharray = ["yemen", "america", "franc", "germany"];
const json = JSON.stringify({searcharray });
const formData = new FormData(); 

formData.append('searcharray', json); 
formData.append('news', 'true'); 

踩过的坑

一开始误以为接收过来的直接是数组,用echo is_array($news) ? 'Array' : 'not an Array';检测后发现并非数组,尝试reset($object)、$object[0]等方法读取数据均失败;还尝试过json_decode(json_encode($searcharrayx), FALSE),同样没有效果。

最终解决代码

后来发现直接对接收的JSON字符串使用json_decode($b, true)就能成功解析为数组,代码如下:

if (isset($_POST["news"]) )
{
    $searcharrayx =  $_POST["searcharray"];
    $b = $searcharrayx;
    $a = json_decode($b, true); // 成功解析为数组
    $ccount = count($a);
    $e = "";
    for($d = 0; $d <= $ccount - 1; $d++) {
        if($d == $ccount - 1){
            $e .= $a[$d];
        } else {
            $e .= $a[$d] . "%20AND%20";
        }
    }
}

更简洁的优化写法

其实不需要写循环,用PHP内置的implode函数就能一行完成字符串拼接:

$e = implode("%20AND%20", $a);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:27:35