PHP相当于C#的多维数组声明

时间:2012-12-13 17:01:13

标签: c# php arrays

在C#中你可以这样做:

poules = new int[aantal, aantal, 2];

我在PHP中找不到这样做的方法。我能找到的只是一个二维数组。

4 个答案:

答案 0 :(得分:3)

您提供的示例是创建一个3D数组,并通过一个方法获取它(由于使用了一种方法,因此速度稍慢)。 PHP使用锯齿状数组。

使用array函数创建PHP中的数组。 为了匹配你的例子:(对于固定的数组长度)

$myArr = new SplFixedArray($aantal);
for ($i = 0; $i < $aantal; $i++) {
    $myArr[$i] = new SplFixedArray($aantal);
    for ($j = 0; $j < $aantal; $j++) {
        $myArr[$i][$j] = new SplFixedArray(2);
    }
}

SplFixedArray用于定义具有固定大小的数组。

正如评论中所述,您很少会看到上面的PHP代码。

您可以像这样访问数组单元格:

$val = $myArr[$x][$y][$z];

以下是参考:SplFixedArray

答案 1 :(得分:1)

我不是C#的人,所以请带上一粒盐。在仔细阅读the documentation后,new int[aantal, aantal, 2]似乎是声明多维int数组的语法,在本例中是一个三维数组。

PHP没有多维数组。它只有数组,你可以有数组数组。我猜这在C#中被称为“锯齿状阵列”。 PHP数组也没有输入,没有等同于int[]

您可以一次声明/访问多个维度:

$arr = array();
$arr[1][2][3] = 'foo';

PHP将根据需要创建中间数组。但是数组是锯齿状的,在执行上面的代码之后没有$arr[0][2][3]

如果您需要事先预先分配所有尺寸,则必须以递归方式循环。这在PHP中并不常见,但是你应该调整你的实践来使用锯齿状数组来完成任务。

答案 2 :(得分:0)

这将是一个php数组:

$poules = array('aantal', 'anntal', '2');

如果aantal是一个变量,只有相同的没有引号:

$poules = array($aantal, $anntal, '2');

在PHP中,您不需要指定变量类型。虽然您可以使用它来验证或过滤输入。

您可以在官方文档中阅读有关PHP数组的更多信息:
http://uk3.php.net/manual/en/language.types.array.php

答案 3 :(得分:0)

$poules = array('aantal', 'aantal', 2);

或者也是aanta1阵列?因为在php中你可以这样做:

$myArray = array("some data", array("more data", "in a other array"), array("key1" => "even with keys"));