PHP使用for循环结合数据库变量与$_GET创建关联数组格式错误如何解决
问题修复方案
核心原因
原有代码循环内每次给$dataArray追加新的子数组,最终形成嵌套二维结构,不符合一维关联数组的预期。
优化后完整代码
无需额外存储变量名数组再循环遍历,可直接在查询结果遍历阶段完成赋值,同时兼容GET参数不存在的场景避免报错:
if ($variableResult->num_rows > 0) { $dataArray = []; while ($variable_row = $variableResult->fetch_assoc()) { $paramName = $variable_row['variable_name']; $dataArray[$paramName] = htmlspecialchars($_GET[$paramName] ?? ''); } var_dump($dataArray); exit(); }
最小改动方案(保留原有代码结构)
如果需要保留你原有先收集变量名的写法,仅需修改for循环内的赋值逻辑即可:
// 原有for循环内代码替换为以下内容 $dataArray[$variableArray[$i]] = htmlspecialchars($_GET[$variableArray[$i]] ?? '');
最终输出效果
修改后可得到预期的一维关联数组,示例输出如下:
array(5) { ["EMAIL"]=> string(17) "nidhi@example.com" ["LNAME"]=> string(5) "NIDHI" ["THIS_IS_CUSTOM"]=> string(0) "" ["THIS_IS_CUSTOM_2"]=> string(0) "" ["THIS_IS_CUSTOM_3"]=> string(0) "" }
内容的提问来源于stack exchange,提问作者Nidhi
相关产品推荐
相关产品推荐

