Почему этот многомерный массив ведет себя странно в C #?

Хорошо, во-первых, я изначально запрограммировал этот парсер csv на PHP. Он предназначен для специального типа файла CSV, который мы используем внутри компании. В любом случае, я хотел перенести его на C #, чтобы получить некоторый опыт работы с языком. Единственное, что я вижу, отличается между этими двумя (сценариями?), Это то, что я изменил sqlarray с 3-мерного зубчатого массива (массив массивов массивов) на 3-мерный массив (sqlarray [,,]). У меня проблема в том, что после цикла, который помещает данные в sqlarray, печатается только последняя строка из CSV-файла. Результат показан ниже.

Вот код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleIometerParser
{
    class Program
    {
        public static int linenum = 0;
        public static int totaldisks = 0;
        public static int disk = 0;
        public static string[,,] sqlarray;

        static int Main(string[] args)
        {
            string filename = args[0];
            string[] lines = System.IO.File.ReadAllLines(@filename);

            System.Console.WriteLine("Processing Data...");

            foreach (string line in lines)
            {
                //Console.WriteLine("Linenum: " + linenum);
                string[] linearray;
                string lineNoQuotes;

                char[] delimiter = new Char[] { ',' };

                lineNoQuotes = line.Replace("\"", string.Empty);
                lineNoQuotes = lineNoQuotes.Replace("'", string.Empty);

                linearray = lineNoQuotes.Split(delimiter);
                totaldisks = (linearray.Length - 1) / 10;

                sqlarray = new string[totaldisks, lines.Length, 13];

                for (disk = 0; disk < totaldisks; disk++)
                {
                    sqlarray[disk, linenum, 0] = ""; //blank field for the SQL id field
                    sqlarray[disk, linenum, 1] = args[1]; //testid
                    sqlarray[disk, linenum, 2] = linearray[0]; //time

                    for (int i = 1; i < 10; i++)
                    {
                        int arraypos = disk + (i * totaldisks);
                        sqlarray[disk, linenum, i + 2] = linearray[arraypos].ToString();
                        Console.WriteLine("sqlarray[{0},{1},{2}]: {3}", disk, linenum, i, sqlarray[disk, linenum, i]);
                    }
                }
                linenum++;
            }
            for (int i = 0; i < totaldisks; i++)
            {
                for (int j = 0; j < lines.Length; j++)
                {
                    for (int k = 0; k < 13; k++)
                    {
                        Console.WriteLine("sqlarray[{0},{1},{2}]: {3}", i, j, k, sqlarray[i, j, k]);
                    }
                }
            }

            Console.WriteLine("Data Processed Successfully.");
            Console.Read();

            return 0;
        }
    }
}

И вот то же самое в PHP (я еще не сделал часть, специфичную для Linux в C #):

<?php

$testid = $_POST['testid'];
$csvfile = $_POST['fn'];

$fieldseparator = ",";

if(!file_exists($csvfile)) { 
    echo "File not found. Make sure you specified the correct path.\n"; 
    echo "<meta http-equiv=\"refresh\" content=\"10;URL=http://".$_SERVER['HTTP_HOST']."/test.php?id=$testid\">"; 
    exit; 
    }

$file = fopen($csvfile,"r");
if(!$file) {
    echo "Error opening data file.\n";
    echo "<meta http-equiv=\"refresh\" content=\"10;URL=http://".$_SERVER['HTTP_HOST']."/test.php?id=$testid\">";
    exit;
    }

$size = filesize($csvfile);
if(!$size) {
echo "File is empty.\n";
echo "<meta http-equiv=\"refresh\" content=\"10;URL=http://".$_SERVER['HTTP_HOST']."/test.php?id=$testid\">";
exit;
}

$csvcontent = fread($file,$size);
fclose($file);

$line_pos = 0;
$linearray = array();
$variablearray = array();
$sqlarray = array();
$_SESSION['linuxcsv'] = "0";

if(substr($csvcontent, 1, 5) == "Dstat"){
    $_SESSION['linuxcsv'] = "1";
}

if($_SESSION['linuxcsv'] == 1){
    $criteria = "/\n/";
}
else{
    $criteria = "/\r\n/";
}

foreach(preg_split($criteria,$csvcontent) as $line) {
    if(!(empty($line))){
        if($_SESSION['linuxcsv'] == "1"){
            if($line_pos <= 7){
                $line_pos++;
            }
            else{
                $line_pos++;
                $line = str_replace('"', '', $line);
                            $line = str_replace("\r","",$line);
                            $line = str_replace("'","\'",$line);

                $linearray = explode($fieldseparator,$line);
                $total_disks = ((count($linearray) - 4) / 4);

                $disk = "1";
                $count = "0";


                $totalarray = array();

                $variablearray[0] = "";
                $variablearray[1] = $testid;
                $variablearray[2] = $linearray[0];
                $variablearray[3] = "0";
                $variablearray[4] = "0";
                $variablearray[5] = "0";
                $variablearray[6] = "0";

                $totalarray[0] = "";
                $totalarray[1] = $testid;
                $totalarray[2] = $linearray[0];
                $totalarray[3] = "0";
                $totalarray[4] = "0";
                $totalarray[5] = "0";
                $totalarray[6] = "0";

                for($i=4; $i<count($linearray); $i++){
                    $count++;
                    if($count == "1"){
                        $variablearray[8] = $linearray[$i];
                    }
                    if($count == "2"){
                                                $variablearray[11] = $linearray[$i];
                                        }
                    if($count == "3"){
                                                $variablearray[9] = $linearray[$i];
                                        }
                    if($count == "4"){
                                                $variablearray[12] = $linearray[$i];

                        //total up the iops and throughput
                        $variablearray[7] = $variablearray[8] + $variablearray[11]; //throughput
                        $variablearray[10] = $variablearray[9] + $variablearray[12]; //iops

                        for($n=7;$n<count($variablearray);$n++){
                            $totalarray[$n] += $variablearray[$n];
                        }

                        ksort($variablearray);
                        $sqlarray[$disk][$line_pos] = $variablearray;
                        $sqlarray['overall'][$line_pos] = $totalarray;
                        $disk++;
                        $count = "0";
                                        }
                }
            } 
        }
        else{
            $line_pos++;

            $line = str_replace('"', '', $line);
            $line = str_replace("\r","",$line);
            $line = str_replace("'","\'",$line);

            $linearray = explode($fieldseparator,$line);
            $total_disks = (count($linearray) - 1) / 10;
            for ($disk=1; $disk<=$total_disks; $disk++) {
                //blank field for mysql ID field, static testid, time
                $variablearray[0] = "";
                $variablearray[1] = $testid;
                $variablearray[2] = strtotime($linearray[0]);
                //other fields
                for ($j=0; $j<10; $j++) {
                    $arraypos = $disk + ($j * ($total_disks));
                    $variablearray[$j+3] = $linearray[$arraypos]; }
                //insert line into sql query array
                $sqlarray[$disk][$line_pos] = $variablearray;
            }
        }
    }
}

if($_SESSION['linuxcsv'] == "1"){
    //insert disk results
    for($disk=1; $disk<=$total_disks; $disk++) {
        $query = "INSERT INTO testresults_disk".$disk." VALUES ";
        foreach($sqlarray[$disk] as $data){
            $query .= " ('".implode("','",$data)."'),";
        }
    $query = substr_replace($query,";",-1);

    if(!mysql_query($query)) {
        echo "Sorry, we could not enter the data into the database. Please try again.\n ".$query;
    }
    }
    //overall data
    $ov_query = "INSERT INTO testresults_overall VALUES ";
        foreach($sqlarray['overall'] as $ovarray){
            $ov_query .= " ('".implode("','",$ovarray)."'),";
        }
    $ov_query = substr_replace($ov_query,";",-1);
    if(!mysql_query($ov_query)) {
        echo "Sorry, we could not enter the data into the database.  Please try again. \n ".$ov_query;
    }
}
else{
//process sql query array
for ($disk=1; $disk<=$total_disks; $disk++) {
    //are we dealing with overall values?
    if($disk == $total_disks) {
                $databasetable = "testresults_overall";
                }
            else {
                //nope, just disk values
                $databasetable = "testresults_disk".$disk;
                }
    //build the initial query
    $query = "INSERT INTO $databasetable VALUES ";
    //
    foreach($sqlarray[$disk] as $data){
        $query .= " ('".implode("','",$data)."'),";
    }
    $query = substr_replace($query ,";",-1);

    if(!mysql_query($query)) {
        echo "Sorry, we could not enter ".print_r($query)." into the database.  Please try again.";
    }
}
}
echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://".$_SERVER['HTTP_HOST']."/test.php?id=".$testid."\">";
?>

Вот результат C # файл:

Processing Data...
******* Ok, this is where it's putting data into SQLarray (foreach line in lines) *****
sqlarray[0,0,1]: 1
sqlarray[0,0,2]: Column1
sqlarray[0,0,3]: Column4
sqlarray[0,0,4]: Column7
sqlarray[0,0,5]: Column10
sqlarray[0,0,6]: Column13
sqlarray[0,0,7]: Column16
sqlarray[0,0,8]: Column19
sqlarray[0,0,9]: Column22
sqlarray[1,0,1]: 1
sqlarray[1,0,2]: Column1
sqlarray[1,0,3]: Column5
sqlarray[1,0,4]: Column8
sqlarray[1,0,5]: Column11
sqlarray[1,0,6]: Column14
sqlarray[1,0,7]: Column17
sqlarray[1,0,8]: Column20
sqlarray[1,0,9]: Column23
sqlarray[2,0,1]: 1
sqlarray[2,0,2]: Column1
sqlarray[2,0,3]: Column6
sqlarray[2,0,4]: Column9
sqlarray[2,0,5]: Column12
sqlarray[2,0,6]: Column15
sqlarray[2,0,7]: Column18
sqlarray[2,0,8]: Column21
sqlarray[2,0,9]: Column24
sqlarray[0,1,1]: 1
sqlarray[0,1,2]: 07/08/10 03:04 PM
sqlarray[0,1,3]:
sqlarray[0,1,4]:
sqlarray[0,1,5]:
sqlarray[0,1,6]: 0
sqlarray[0,1,7]:
sqlarray[0,1,8]:
sqlarray[0,1,9]:
sqlarray[1,1,1]: 1
sqlarray[1,1,2]: 07/08/10 03:04 PM
sqlarray[1,1,3]:
sqlarray[1,1,4]:
sqlarray[1,1,5]: 0
sqlarray[1,1,6]:
sqlarray[1,1,7]:
sqlarray[1,1,8]:
sqlarray[1,1,9]:
sqlarray[2,1,1]: 1
sqlarray[2,1,2]: 07/08/10 03:04 PM
sqlarray[2,1,3]:
sqlarray[2,1,4]:
sqlarray[2,1,5]: 0
sqlarray[2,1,6]:
sqlarray[2,1,7]:
sqlarray[2,1,8]:
sqlarray[2,1,9]:
sqlarray[0,2,1]: 1
sqlarray[0,2,2]: 07/08/10 03:06 PM
sqlarray[0,2,3]: 98.6
sqlarray[0,2,4]: 0.02
sqlarray[0,2,5]: 0.02
sqlarray[0,2,6]: 0
sqlarray[0,2,7]: 508500.98
sqlarray[0,2,8]: 70684.4
sqlarray[0,2,9]: 10.91
sqlarray[1,2,1]: 1
sqlarray[1,2,2]: 07/08/10 03:06 PM
sqlarray[1,2,3]: 0.02
sqlarray[1,2,4]: 0.02
sqlarray[1,2,5]: 0
sqlarray[1,2,6]: 501532.1
sqlarray[1,2,7]: 70684.4
sqlarray[1,2,8]: 10.91
sqlarray[1,2,9]: 29.84
sqlarray[2,2,1]: 1
sqlarray[2,2,2]: 07/08/10 03:06 PM
sqlarray[2,2,3]: 0
sqlarray[2,2,4]: 0
sqlarray[2,2,5]: 0
sqlarray[2,2,6]: 6968.88
sqlarray[2,2,7]: 0
sqlarray[2,2,8]: 0
sqlarray[2,2,9]: 0.81
sqlarray[0,3,1]: 1
sqlarray[0,3,2]: 07/08/10 03:07 PM
sqlarray[0,3,3]: 99.86
sqlarray[0,3,4]: 0
sqlarray[0,3,5]: 0
sqlarray[0,3,6]: 0
sqlarray[0,3,7]: 84469.57
sqlarray[0,3,8]: 273.07
sqlarray[0,3,9]: 0.07
sqlarray[1,3,1]: 1
sqlarray[1,3,2]: 07/08/10 03:07 PM
sqlarray[1,3,3]: 0
sqlarray[1,3,4]: 0
sqlarray[1,3,5]: 0
sqlarray[1,3,6]: 78092.25
sqlarray[1,3,7]: 273.07
sqlarray[1,3,8]: 0.07
sqlarray[1,3,9]: 5.39
sqlarray[2,3,1]: 1
sqlarray[2,3,2]: 07/08/10 03:07 PM
sqlarray[2,3,3]: 0
sqlarray[2,3,4]: 0
sqlarray[2,3,5]: 0
sqlarray[2,3,6]: 6377.32
sqlarray[2,3,7]: 0
sqlarray[2,3,8]: 0
sqlarray[2,3,9]: 0.76
sqlarray[0,4,1]: 1
sqlarray[0,4,2]: 07/08/10 03:09 PM
sqlarray[0,4,3]: 99.83
sqlarray[0,4,4]: 0
sqlarray[0,4,5]: 0
sqlarray[0,4,6]: 0
sqlarray[0,4,7]: 35277.63
sqlarray[0,4,8]: 1849.23
sqlarray[0,4,9]: 0.32
sqlarray[1,4,1]: 1
sqlarray[1,4,2]: 07/08/10 03:09 PM
sqlarray[1,4,3]: 0
sqlarray[1,4,4]: 0
sqlarray[1,4,5]: 0
sqlarray[1,4,6]: 25764.05
sqlarray[1,4,7]: 1576.11
sqlarray[1,4,8]: 0.29
sqlarray[1,4,9]: 4.05
sqlarray[2,4,1]: 1
sqlarray[2,4,2]: 07/08/10 03:09 PM
sqlarray[2,4,3]: 0
sqlarray[2,4,4]: 0
sqlarray[2,4,5]: 0
sqlarray[2,4,6]: 9513.58
sqlarray[2,4,7]: 273.12
sqlarray[2,4,8]: 0.03
sqlarray[2,4,9]: 1.06
sqlarray[0,5,1]: 1
sqlarray[0,5,2]: 07/08/10 03:10 PM
sqlarray[0,5,3]: 99.91
sqlarray[0,5,4]: 0
sqlarray[0,5,5]: 0
sqlarray[0,5,6]: 0
sqlarray[0,5,7]: 34662.41
sqlarray[0,5,8]: 182.04
sqlarray[0,5,9]: 0.03
sqlarray[1,5,1]: 1
sqlarray[1,5,2]: 07/08/10 03:10 PM
sqlarray[1,5,3]: 0
sqlarray[1,5,4]: 0
sqlarray[1,5,5]: 0
sqlarray[1,5,6]: 25691.03
sqlarray[1,5,7]: 91.02
sqlarray[1,5,8]: 0.02
sqlarray[1,5,9]: 4.06
sqlarray[2,5,1]: 1
sqlarray[2,5,2]: 07/08/10 03:10 PM
sqlarray[2,5,3]: 4.67E-005
sqlarray[2,5,4]: 0
sqlarray[2,5,5]: 0
sqlarray[2,5,6]: 8971.38
sqlarray[2,5,7]: 91.02
sqlarray[2,5,8]: 0.01
sqlarray[2,5,9]: 0.87
******* Ok, this is where it's showing the data AFTER the foreach line in lines loop *****
sqlarray[0,0,0]:
sqlarray[0,0,1]:
sqlarray[0,0,2]:
sqlarray[0,0,3]:
sqlarray[0,0,4]:
sqlarray[0,0,5]:
sqlarray[0,0,6]:
sqlarray[0,0,7]:
sqlarray[0,0,8]:
sqlarray[0,0,9]:
sqlarray[0,0,10]:
sqlarray[0,0,11]:
sqlarray[0,0,12]:
sqlarray[0,1,0]:
sqlarray[0,1,1]:
sqlarray[0,1,2]:
sqlarray[0,1,3]:
sqlarray[0,1,4]:
sqlarray[0,1,5]:
sqlarray[0,1,6]:
sqlarray[0,1,7]:
sqlarray[0,1,8]:
sqlarray[0,1,9]:
sqlarray[0,1,10]:
sqlarray[0,1,11]:
sqlarray[0,1,12]:
sqlarray[0,2,0]:
sqlarray[0,2,1]:
sqlarray[0,2,2]:
sqlarray[0,2,3]:
sqlarray[0,2,4]:
sqlarray[0,2,5]:
sqlarray[0,2,6]:
sqlarray[0,2,7]:
sqlarray[0,2,8]:
sqlarray[0,2,9]:
sqlarray[0,2,10]:
sqlarray[0,2,11]:
sqlarray[0,2,12]:
sqlarray[0,3,0]:
sqlarray[0,3,1]:
sqlarray[0,3,2]:
sqlarray[0,3,3]:
sqlarray[0,3,4]:
sqlarray[0,3,5]:
sqlarray[0,3,6]:
sqlarray[0,3,7]:
sqlarray[0,3,8]:
sqlarray[0,3,9]:
sqlarray[0,3,10]:
sqlarray[0,3,11]:
sqlarray[0,3,12]:
sqlarray[0,4,0]:
sqlarray[0,4,1]:
sqlarray[0,4,2]:
sqlarray[0,4,3]:
sqlarray[0,4,4]:
sqlarray[0,4,5]:
sqlarray[0,4,6]:
sqlarray[0,4,7]:
sqlarray[0,4,8]:
sqlarray[0,4,9]:
sqlarray[0,4,10]:
sqlarray[0,4,11]:
sqlarray[0,4,12]:
sqlarray[0,5,0]:
sqlarray[0,5,1]: 1
sqlarray[0,5,2]: 07/08/10 03:10 PM
sqlarray[0,5,3]: 99.91
sqlarray[0,5,4]: 0
sqlarray[0,5,5]: 0
sqlarray[0,5,6]: 0
sqlarray[0,5,7]: 34662.41
sqlarray[0,5,8]: 182.04
sqlarray[0,5,9]: 0.03
sqlarray[0,5,10]: 4.92
sqlarray[0,5,11]: 34480.36
sqlarray[0,5,12]:
sqlarray[1,0,0]:
sqlarray[1,0,1]:
sqlarray[1,0,2]:
sqlarray[1,0,3]:
sqlarray[1,0,4]:
sqlarray[1,0,5]:
sqlarray[1,0,6]:
sqlarray[1,0,7]:
sqlarray[1,0,8]:
sqlarray[1,0,9]:
sqlarray[1,0,10]:
sqlarray[1,0,11]:
sqlarray[1,0,12]:
sqlarray[1,1,0]:
sqlarray[1,1,1]:
sqlarray[1,1,2]:
sqlarray[1,1,3]:
sqlarray[1,1,4]:
sqlarray[1,1,5]:
sqlarray[1,1,6]:
sqlarray[1,1,7]:
sqlarray[1,1,8]:
sqlarray[1,1,9]:
sqlarray[1,1,10]:
sqlarray[1,1,11]:
sqlarray[1,1,12]:
sqlarray[1,2,0]:
sqlarray[1,2,1]:
sqlarray[1,2,2]:
sqlarray[1,2,3]:
sqlarray[1,2,4]:
sqlarray[1,2,5]:
sqlarray[1,2,6]:
sqlarray[1,2,7]:
sqlarray[1,2,8]:
sqlarray[1,2,9]:
sqlarray[1,2,10]:
sqlarray[1,2,11]:
sqlarray[1,2,12]:
sqlarray[1,3,0]:
sqlarray[1,3,1]:
sqlarray[1,3,2]:
sqlarray[1,3,3]:
sqlarray[1,3,4]:
sqlarray[1,3,5]:
sqlarray[1,3,6]:
sqlarray[1,3,7]:
sqlarray[1,3,8]:
sqlarray[1,3,9]:
sqlarray[1,3,10]:
sqlarray[1,3,11]:
sqlarray[1,3,12]:
sqlarray[1,4,0]:
sqlarray[1,4,1]:
sqlarray[1,4,2]:
sqlarray[1,4,3]:
sqlarray[1,4,4]:
sqlarray[1,4,5]:
sqlarray[1,4,6]:
sqlarray[1,4,7]:
sqlarray[1,4,8]:
sqlarray[1,4,9]:
sqlarray[1,4,10]:
sqlarray[1,4,11]:
sqlarray[1,4,12]:
sqlarray[1,5,0]:
sqlarray[1,5,1]: 1
sqlarray[1,5,2]: 07/08/10 03:10 PM
sqlarray[1,5,3]: 0
sqlarray[1,5,4]: 0
sqlarray[1,5,5]: 0
sqlarray[1,5,6]: 25691.03
sqlarray[1,5,7]: 91.02
sqlarray[1,5,8]: 0.02
sqlarray[1,5,9]: 4.06
sqlarray[1,5,10]: 25600.01
sqlarray[1,5,11]: 4.03
sqlarray[1,5,12]:
sqlarray[2,0,0]:
sqlarray[2,0,1]:
sqlarray[2,0,2]:
sqlarray[2,0,3]:
sqlarray[2,0,4]:
sqlarray[2,0,5]:
sqlarray[2,0,6]:
sqlarray[2,0,7]:
sqlarray[2,0,8]:
sqlarray[2,0,9]:
sqlarray[2,0,10]:
sqlarray[2,0,11]:
sqlarray[2,0,12]:
sqlarray[2,1,0]:
sqlarray[2,1,1]:
sqlarray[2,1,2]:
sqlarray[2,1,3]:
sqlarray[2,1,4]:
sqlarray[2,1,5]:
sqlarray[2,1,6]:
sqlarray[2,1,7]:
sqlarray[2,1,8]:
sqlarray[2,1,9]:
sqlarray[2,1,10]:
sqlarray[2,1,11]:
sqlarray[2,1,12]:
sqlarray[2,2,0]:
sqlarray[2,2,1]:
sqlarray[2,2,2]:
sqlarray[2,2,3]:
sqlarray[2,2,4]:
sqlarray[2,2,5]:
sqlarray[2,2,6]:
sqlarray[2,2,7]:
sqlarray[2,2,8]:
sqlarray[2,2,9]:
sqlarray[2,2,10]:
sqlarray[2,2,11]:
sqlarray[2,2,12]:
sqlarray[2,3,0]:
sqlarray[2,3,1]:
sqlarray[2,3,2]:
sqlarray[2,3,3]:
sqlarray[2,3,4]:
sqlarray[2,3,5]:
sqlarray[2,3,6]:
sqlarray[2,3,7]:
sqlarray[2,3,8]:
sqlarray[2,3,9]:
sqlarray[2,3,10]:
sqlarray[2,3,11]:
sqlarray[2,3,12]:
sqlarray[2,4,0]:
sqlarray[2,4,1]:
sqlarray[2,4,2]:
sqlarray[2,4,3]:
sqlarray[2,4,4]:
sqlarray[2,4,5]:
sqlarray[2,4,6]:
sqlarray[2,4,7]:
sqlarray[2,4,8]:
sqlarray[2,4,9]:
sqlarray[2,4,10]:
sqlarray[2,4,11]:
sqlarray[2,4,12]:
sqlarray[2,5,0]:
sqlarray[2,5,1]: 1
sqlarray[2,5,2]: 07/08/10 03:10 PM
sqlarray[2,5,3]: 4.67E-005
sqlarray[2,5,4]: 0
sqlarray[2,5,5]: 0
sqlarray[2,5,6]: 8971.38
sqlarray[2,5,7]: 91.02
sqlarray[2,5,8]: 0.01
sqlarray[2,5,9]: 0.87
sqlarray[2,5,10]: 8880.36
sqlarray[2,5,11]: 0.86
sqlarray[2,5,12]:
Data Processed Successfully.
1
задан Claude 15 September 2010 в 19:09
поделиться