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

PHP如何插入关联数组?pg_fetch_array循环为何仅返回最后一条记录

问题原因

你当前代码的循环逻辑存在覆盖赋值问题:每次遍历查询结果行时,直接对$list变量重新赋值,前一轮循环存入的内容会被新值覆盖,循环结束后变量自然只会保留最后一条记录的pedro。

修复方案

提前初始化空数组存储全量结果,循环时将每行的值追加到数组中,而非直接覆盖变量,参考代码如下:

if (!$result) {
  echo "An error occurred.\n";
  exit;
}

// 初始化空数组承载所有查询结果
$nameList = [];
// 推荐用pg_fetch_assoc直接获取纯关联数组,省去多余的数字索引
while($row = pg_fetch_assoc($result)) {
  // 用[]语法向数组尾部追加当前行的值,不会覆盖历史数据
  $nameList[] = $row['list'];
}

pg_free_result($result);

执行完成后,$nameList就是包含全部结果的数组,结构如下:

[
    0 => 'Luis',
    1 => 'Carlos',
    2 => 'Pedro'
]

如果要生成你预期的无序列表,遍历该数组输出即可:

echo '<ul>';
foreach ($nameList as $name) {
  // 输出到页面前用htmlspecialchars转义,避免特殊字符引发页面异常或XSS风险
  echo '<li>' . htmlspecialchars($name) . '</li>';
}
echo '</ul>';

补充说明:如果你使用的是pg_fetch_array()且未指定第二个参数,默认会同时返回数字索引和关联索引两份数据,内存占用更高,仅需要关联字段时优先用pg_fetch_assoc()更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:27:17