1

在 C# 中,您可以这样做:

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

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

4

4 回答 4

3

您提供的示例是创建一个 3D 数组,并通过一种方法获取它(这有点慢,因为使用了一种方法)。PHP 使用锯齿状数组。

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

$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

于 2012-12-13T17:07:44.627 回答
1

我不是 C# 人,所以对此持保留态度。不过,在仔细阅读文档之后,new int[aantal, aantal, 2]似乎是声明多维int数组的语法,在这种情况下是一个 3 维数组。

PHP 没有多维数组。它只有数组,你可以有数组的数组。我猜这在 C# 中被称为“锯齿状数组”。PHP 数组也没有类型,没有等价于int[].

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

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

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

如果您需要预先分配所有维度,则必须递归循环。不过,这在 PHP 中并不经常发生,您应该调整您的实践以使用锯齿状数组来完成任务。

于 2012-12-13T17:07:55.623 回答
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

于 2012-12-13T17:02:55.963 回答
0
$poules = array('aantal', 'aantal', 2);

还是 aanta1 数组?因为在 php 中你可以这样做:

$myArray = array("some data", array("more data", "in a other array"), array("key1" => "even with keys"));
于 2012-12-13T17:04:06.407 回答