Я пишу скрипт, который принимает один CSV-файл, чтобы преобразовать его в другой. В основном используются два цикла foreach: один для итерации записей, а другой для итерации полей. Определенные поля (cno 25, 26, 44) для каждой записи должны быть изменены. Проблема в том, что каждое модификация создает дополнительное пустое поле, то есть код
$colStr .= '"' . $col . '";';
работает, но не код в операторах if.
Код:
$rno = 0;
foreach ($csvArray as $line)
{
$cno = 0;
$colStr = "";
foreach ($line as $col)
{
if($rno>0 && $cno==25)
{
$stuff = array($csvArray[$rno][41], $csvArray[$rno][47], $csvArray[$rno][48], $csvArray[$rno][49]);
foreach($stuff as &$value)
{
$value = preg_replace('/[^0-9]/', '', $value);
}
sort($stuff, SORT_NUMERIC);
// Causes bug!
$colStr .= '"' . $stuff[0] . '";';
}
if($rno>0 && $cno==26)
{
$urls = "";
for($i = 55; $i<=62; $i++)
{
$urls .= "Images: " . $csvArray[$rno][$i] . " | ";
}
$urls .= "Some text: " . $csvArray[$rno][43] . " | ";
// Causes bug!
$colStr .= '"' . $urls . '";';
}
if($rno>0 && $cno==44)
{
$colStr .= '"' . $_POST['location'][$rno] . '";';
}
if($rno>0 && $cno==54)
{
$objType = $col;
$objType = preg_replace('/foobar/i', '123', $objType);
// Causes bug!
$colStr .= '"' . $objType . '";';
}
else
{
// This is ok, though
$colStr .= '"' . $col . '";';
}
$cno++;
}
$colStr = preg_replace('/;$/', '', $colStr);
$colStr .= "\n";
fwrite($outputFile, $colStr);
$rno++;
}
fclose($outputFile);