我正在使用以下函数将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>";
}
}
}
答案 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
}