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

PHP导出SQL数据到.csv文件如何去除数组重复条目

问题原因

你遇到的双倍条目问题是sqlsrv_fetch_array函数的默认返回特性导致的:该函数默认使用SQLSRV_FETCH_BOTH作为提取类型,会同时返回数字索引和关联字段名索引的两套数组元素,所以3列的查询结果会返回6个元素的数组。
你之前尝试array_values无效的原因是:该函数只会提取原数组的所有值按顺序生成新数组,原本就存在的两套值不会被过滤,自然没有效果。

解决方法

只需要在调用sqlsrv_fetch_array时传入第二个参数指定提取类型即可,有两种可选方案:

  • 方案1:仅获取关联数组(键为表字段名)
    传入SQLSRV_FETCH_ASSOC参数,返回的数组只会包含id、survey_id、item三个键值对:
$sql="Select * from Percept_Segments";
$stmt = sqlsrv_query( $conn, $sql);
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){
  // 此处$row仅含3个元素,键为字段名
  var_dump($row);
  exit();
}
  • 方案2:仅获取数字索引数组(键为0、1、2)
    传入SQLSRV_FETCH_NUM参数,返回的数组只会包含数字索引的三个元素,适合直接写入CSV的场景:
$sql="Select * from Percept_Segments";
$stmt = sqlsrv_query( $conn, $sql);
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUM)){
  // 此处$row仅含3个数字索引元素,可直接传入fputcsv写入文件
  var_dump($row);
  exit();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:39:01