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
相关产品推荐
相关产品推荐

