这是为什么多维数组作用在C#好笑吗? [英] Why is this multi-dimensional array acting funny in C#?

查看:101
本文介绍了这是为什么多维数组作用在C#好笑吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,首先,我原先编程在PHP这个CSV解析器。它是一种特殊的CSV文件,我们内部使用。无论如何,我想将它移动到C#来获得与语言的一些经验。我可以看到的唯一的事情是两个之间是不同的(脚本?)是我变化sqlarray从3维交错数组(数组的数组的数组)到3维数组(sqlarray [,,])。我的问题是只能从CSV文件的最后一行,将数据输入sqlarray循环后得到打印。输出如下图所示。

下面是code:

 使用系统;
使用System.Collections.Generic;
使用System.Linq的;
使用System.Text;
使用System.IO;命名空间ConsoleIometerParser
{
    类节目
    {
        公共静态INT LINENUM = 0;
        公共静态INT totaldisks = 0;
        公共静态INT磁盘= 0;
        公共静态字符串[,,] sqlarray;        静态INT主要(字串[] args)
        {
            字符串文件名= ARGS [0];
            字符串[] =行System.IO.File.ReadAllLines(@filename);            的System.Console.WriteLine(处理数据......);            的foreach(以线串线)
            {
                //Console.WriteLine(\"Linenum:+ LINENUM);
                字符串[] linearray;
                串lineNoQuotes;                的char [] =分隔符煤焦新[] {','};                lineNoQuotes = line.Replace(\\的String.Empty);
                lineNoQuotes = lineNoQuotes.Replace(',的String.Empty);                linearray = lineNoQuotes.Split(分隔符);
                totaldisks =(linearray.Length - 1)/ 10;                sqlarray =新的字符串[totaldisks,lines.Length,13];                对于(磁盘= 0;磁盘< totaldisks;磁盘++)
                {
                    sqlarray [硬盘,LINENUM,0] =; //为SQL ID字段为空场
                    sqlarray [硬盘,LINENUM,1] = ARGS [1]; // testid
                    sqlarray [硬盘,LINENUM,2] = linearray [0]; //时间                    的for(int i = 1;我小于10;我++)
                    {
                        INT arraypos =盘+(我* totaldisks);
                        sqlarray [盘,LINENUM,I + 2] = linearray [arraypos]的ToString();
                        Console.WriteLine(sqlarray [{0},{1},{2}]:{3},磁盘,LINENUM,I,sqlarray [硬盘,LINENUM,I]);
                    }
                }
                LINENUM ++;
            }
            的for(int i = 0; I< totaldisks;我++)
            {
                对于(INT J = 0; J< lines.Length; J ++)
                {
                    为(中间体K = 0; K&; 13; k ++)
                    {
                        Console.WriteLine(sqlarray [{0},{1},{2}]:{3},I,J,K,sqlarray [I,J,K]);
                    }
                }
            }            Console.WriteLine(数据处理成功。);
            Console.Read();            返回0;
        }
    }
}

这是PHP(我没有做过在C#还没有具体的Linux的部分)同样的事情:

 < PHP$ testid = $ _ POST ['testid'];
$ csvfile = $ _ POST ['FN'];$ fieldseparator =,;如果(!file_exists($ csvfile)){
    回声找不到文件确保您指定了正确的路径\\ n。
    回声< META HTTP-当量= \\刷新\\的内容= \\10; URL = HTTP:。$ _ SERVER ['HTTP_HOST']?// /test.php ID = $ testid \\>
    出口;
    }$文件=的fopen($ csvfile,R);
如果(!$文件){
    回声错误打开数据文件\\ n;
    回声< META HTTP-当量= \\刷新\\的内容= \\10; URL = HTTP:。$ _ SERVER ['HTTP_HOST']?// /test.php ID = $ testid \\>
    出口;
    }$大小=文件大小($ csvfile);
如果(!$大小){
回声文件是空的\\ n;
回声< META HTTP-当量= \\刷新\\的内容= \\10; URL = HTTP:。$ _ SERVER ['HTTP_HOST']?// /test.php ID = $ testid \\>
出口;
}$ csvcontent = FREAD($文件,$大小);
FCLOSE($文件);$ line_pos = 0;
$ linearray =阵列();
$ variablearray =阵列();
$ sqlarray =阵列();
$ _SESSION ['linuxcsv'] =0;如果(SUBSTR($ csvcontent,1,5)==Dstat){
    $ _SESSION ['linuxcsv'] =1;
}如果($ _ SESSION ['linuxcsv'] == 1){
    $标准=/ \\ n /;
}
其他{
    $标准=/ \\ r \\ n /;
}的foreach(preg_split($标准,$ csvcontent)为$线){
    如果(!(空($线))){
        如果($ _ SESSION ['linuxcsv'] ==1){
            如果($ line_pos&下; = 7){
                $ line_pos ++;
            }
            其他{
                $ line_pos ++;
                $线= str_replace函数('','',$线);
                            $线= str_replace函数(\\ r,,$线);
                            $线= str_replace函数(',\\',$线);                $ linearray =爆炸($ fieldseparator,$线);
                $ total_disks =((计数($ linearray) - 4)/ 4);                $磁盘=1;
                $计数=0;
                $ totalarray =阵列();                $ 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;                为($ I = 4; $ I<计数($ linearray); $ I ++){
                    $计数++;
                    如果($计数==1){
                        $ variablearray [8] = $ linearray [$ i]于;
                    }
                    如果($计数==2){
                                                $ variablearray [11] = $ linearray [$ i];
                                        }
                    如果($计数==3){
                                                $ variablearray [9] = $ linearray [$ i];
                                        }
                    如果($计数==4){
                                                $ variablearray [12] = $ linearray [$ i];                        //合计起来IOPS和吞吐量
                        $ variablearray [7] = $ variablearray [8] + $ variablearray [11]; //吞吐量
                        $ variablearray [10] = $ variablearray [9] + $ variablearray [12]; // IOPS                        为($ N = 7; $ N<计数($ variablearray); $ n ++){
                            $ totalarray [$ N] + = $ variablearray [$ N];
                        }                        ksort($ variablearray);
                        $ sqlarray [$盘] [$ line_pos] = $ variablearray;
                        $ sqlarray ['整体'] [$ line_pos] = $ totalarray;
                        $磁盘++;
                        $计数=0;
                                        }
                }
            }
        }
        其他{
            $ line_pos ++;            $线= str_replace函数('','',$线);
            $线= str_replace函数(\\ r,,$线);
            $线= str_replace函数(',\\',$线);            $ linearray =爆炸($ fieldseparator,$线);
            $ total_disks =(计数($ linearray) - 1)/ 10;
            为($磁盘= 1; $磁盘< = $ total_disks; $磁盘++){
                //为MySQL ID字段为空场,静电testid,时间
                $ variablearray [0] =;
                $ variablearray [1] = $ testid;
                $ variablearray [2] =的strtotime($ linearray [0]);
                //等领域
                为($ J = 0; $ J&小于10; $ J ++){
                    $ arraypos = $磁盘+(附加$ J *($ total_disks));
                    $ variablearray [$ J + 3] = $ linearray [$ arraypos]; }
                //插入行成sql查询数组
                $ sqlarray [$盘] [$ line_pos] = $ variablearray;
            }
        }
    }
}如果($ _ SESSION ['linuxcsv'] ==1){
    //插入磁盘结果
    为($磁盘= 1; $磁盘< = $ total_disks; $磁盘++){
        $查询=INSERT INTO testresults_disk$磁盘价值观。;
        的foreach($ sqlarray [$磁盘]为$数据){
            $查询=('.implode(,,$数据)。')。
        }
    $查询= substr_replace($查询,;, - 1);    如果(!的mysql_query($查询)){
        回声对不起,我们无法将数据输入到数据库,请重试\\ n$查询。
    }
    }
    //总体数据
    $ ov_query =INSERT INTO testresults_overall价值;
        的foreach($ sqlarray ['整体']为$ ovarray){
            。$ ov_query =('.implode(',',$ ovarray)'),;
        }
    $ ov_query = substr_replace($ ov_query,;, - 1);
    如果(!的mysql_query($ ov_query)){
        回声对不起,我们无法将数据输入到数据库,请重试\\ n$ ov_query。
    }
}
其他{
//处理SQL查询数组
为($磁盘= 1; $磁盘< = $ total_disks; $磁盘++){
    //我们正在处理的整体价值?
    如果($磁盘== $ total_disks){
                $ databasetable =testresults_overall;
                }
            其他{
                //不,只是盘值
                。$ databasetable =testresults_disk$盘;
                }
    //构建初始查询
    $查询=INSERT INTO $ databasetable价值;
    //
    的foreach($ sqlarray [$磁盘]为$数据){
        $查询=('.implode(,,$数据)。')。
    }
    $查询= substr_replace($查询,;, - 1);    如果(!的mysql_query($查询)){
        。回声对不起,我们不能进入.print_r($查询)。到数据库,请重试。
    }
}
}
回声< META HTTP-当量= \\刷新\\的内容= \\0; URL = HTTP:。$ _ SERVER ['HTTP_HOST']// /test.php?id=。$ testid。 \\>中;
?>

下面是从C#文件的输出:

 处理数据...
*******好吧,这是它的将数据放入SQLarray(以行的foreach线)*****
sqlarray [0,0,1]:1
sqlarray [0,0,2]:列1
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]:列1
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]:列1
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]:10年7月8日下午3时04分
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]:10年7月8日下午3时04分
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]:10年7月8日下午3时04分
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]:10年7月8日下午3时06分
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]:10年7月8日下午3时06分
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]:10年7月8日下午3点06分
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]:10年7月8日下午3时07分
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]:10年7月8日下午3时07分
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]:10年7月8日下午3时07分
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]:10年7月8日下午3时09分
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]:10年7月8日下午3时09分
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]:10年7月8日下午3时09分
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]:10年7月8日下午3时10分
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]:10年7月8日下午3时10分
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]:10年7月8日下午3时10分
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
*******好吧,这是它的显示行循环的foreach线后的数据*****
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]:10年7月8日下午3时10分
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]:10年7月8日下午3时10分
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 [10,2,4]:
sqlarray [2,4,11]:
sqlarray [2,4,12]:
sqlarray [2,5,0]
sqlarray [2,5,1]:1
sqlarray [2,5,2]:10年7月8日下午3时10分
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]:
数据处理成功。


解决方案

  sqlarray =新的字符串[totaldisks,lines.Length,13];

必须在最外面的外移到for循环

编辑:嗯,我看你用 totaldisks 将每一行,那么你需要使用C#太交错数组

Ok, first of all, I originally programmed this csv parser in PHP. It is for a specialized kind of CSV file that we use internally. Anyway, I wanted to move it to C# to get some experience with the language. The only thing I can see that is different between the two (scripts?) is that I changed sqlarray from a 3-dimensional jagged array (array of arrays of arrays) to a 3-dimensional array (sqlarray[,,]). The problem I have is only the last line from the CSV file is getting printed after the loop that puts the data into sqlarray. Output is shown below.

Here is the code:

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;
        }
    }
}

And here is the same thing in PHP (I haven't done the linux-specific portion in C# yet):

<?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."\">";
?>

Here is the output from the C# file:

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.

解决方案

The line

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

must be moved outside the outermost for loop

Edit: hmmm, I see you use totaldisks from each line, then you need to use jagged arrays in c# too.

这篇关于这是为什么多维数组作用在C#好笑吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆