这是为什么多维数组作用在C#好笑吗? [英] Why is this multi-dimensional array acting funny in 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屋!