检查while循环中的值是否相同

时间:2010-11-02 20:36:35

标签: php loops while-loop

我正在使用以下函数将csv文件转换为xml:

如果$ records [$ row]值与上一次循环相同,我想重复相同的操作。我怎么能做到这一点?

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  $num = count($data);
  $records[] = $data;

  $stringData .= '<PayTo PTPayeeID="' . $records[$row][2];

  // if the value of $records[$row][2] is the same I want to repeat an action.
  echo "<div id=\"row\"><div id=\"num\">" .$row. "</div>";
  $row++;

  for ($c=0; $c < $num; $c++) {
     if ($c != 1) {
       echo "<div class=\"field\">" . $data[$c] . "</div>";
     }
  }
}

3 个答案:

答案 0 :(得分:6)

通常,要将行与前一行进行比较,请将前一行的值存储在变量中。 确保为变量分配一个不会在数据中作为实际值出现的值。

$prevValue = NULL;
while(condition) {
 if ($curValue == $prevValue) {
  .
  . do stuff
  .
 }
 $prevValue = $curValue;
}

答案 1 :(得分:3)

在while循环之前执行:

$prevRow2 = '';

然后你可以比较:

if ($records[$row][2] == $prevRow2) {
    // it's the same as the last time!
}

使用$records[$row][2]后,只需将其复制到$prevRow2,然后再继续使用while循环。

(如果$records[$row][2]可能是空字符串并且您不希望它与第一次迭代匹配,请创建一个$firstTime布尔值来检查它。)

答案 2 :(得分:0)

if (count($records)>1&&$records[count($records)-1]===$records[count($records)-2]) {
  //do something
}