0

我对 C# 有点陌生,想将一些程序从 C# 移植到 PHP

对我来说奇怪的一件事是,

double[][] rate = { new double[] { 1, 2, 3, 4, 5 },
                    new double[] { 2, 4, 6, 8, 10}
                  };
double[,,] quest = {{{1,2,3,4}, {1,1,2,3}, {2,3,4,5}},
                    {{2,3,4,5}, {1,1,1,1}, {3,3,3,3}}
                   };

for ( int i = 0; i < f.Length; i++ ){
    dummy = rate[i][(int)quest[1, 1, 1] - 3];
}

我的问题是,为什么你可以这样调用 cube-array quest[1,1,1],但又为什么像 PHP 中那样调用 array rate[i][blah]?

它们可以互换吗?只是表达的问题,还是比我知道的更多?

4

2 回答 2

0

int[,,]是一个多维数组。它也被称为矩形数组,因为它更像是一个整数的 X 维矩形块(在这种情况下 X=3)。数组的每个切片、行和列分别具有与任何其他切片/行/列相同的大小。

int[][][]是整数数组的数组。它更树性。它也被称为“锯齿状”数组,因为给定索引处的每个数组都可以有不同的长度。

在很多情况下,两者可以做同样的事情,但他们各有长处。矩形数组具有可预测的“形状”,您不必担心是否x[a, b, c]存在如果ab并且c在您创建数组时设置的范围内。您也不必担心为数组的每一级创建数组和子数组。另一方面,在调整和扩展数组的一部分而不做整个事情时,锯齿状数组可以更加灵活。

就类似结构而言,锯齿状数组更接近 PHP 处理数组的方式。

于 2013-06-27T01:59:09.470 回答
0

第一个是数组数组,另一个是多维数组。这是有关此数组的链接

于 2013-06-27T01:59:51.217 回答