循环结果记录并获取foreach中的重复项

时间:2014-04-08 15:41:39

标签: php sql-server arrays

所以我正在尝试我认为简单的循环记录结果。我的查询返回一行数据。我试图简单地将返回记录中每行的值拉入一个名为$ questions的变量中。但是,打印出来的var $ questions在每个空格中都有重复。它应该读取像Bob | Ted | Joe | Sally这样的东西,而不是它正在阅读Bob | Bob | Ted | Ted | Joe | Joe | Sally | Sally。为什么下面的代码在foreach循环中运行两次?

 while ($row = mssql_fetch_array($result)){ 
    foreach ($row as $col => $value) {   
               $questions.=$value."|";       
        }
}
echo "Questions: ".$questions."<br/>";

2 个答案:

答案 0 :(得分:1)

根据PHP doc的mssql_fetch_array:

  

除了将数据存储在结果的数字索引中   数组,它还使用字段将数据存储在关联索引中   名称为键。

结果包括一个普通数组[0 ... n],每列有一个元素,但也有一个关联数组,其中每个值由一个以列名命名的键表示。

因此,如果您的第一列是Id,则可以通过两种方式从一行获取ID:

$id = $row[0];
# or you could do this
$id = $row['Id'];

这就是为什么在循环遍历行时得到每个值两次的原因。

答案 1 :(得分:1)

以下是您需要做的所有事情:

$questions = "";
while ($row = mssql_fetch_array($result)){
    $questions .= $row['fieldName']."|";
}
echo "Questions: ".$questions."<br/>";

除了while()之外,foreach()是不必要的。