2

我想在PHP(5.3)中存储一些数据(我猜是一个半2,半3d数组)我需要做的是存储每个楼层的数据,如下所示:

Floor    Num of Spots    Handicap          Motorcyle        Other
1         100            array(15,16,17)    array (47,62)   array (99,100)
2         100            array(15,16,17)    array (47,62)   array (99,100)
and on

问题是,如果 Handicap+Motorcyle+Other 是整数,我可以将数据存储在二维数组中。然而,他们不是。所以我想我可以制作一个几乎像 3D 数组的东西,前两列只有 2D。

我的另一个想法是制作一个二维数组和第 3,4 和 5 列而不是另存为

array(15,16)
//save like
1516

然后拆分为两位数(1 位数组编号将以 0 开头)。但是,我想知道字符串长度的限制,因为如果我决定移动到数组中的 3 位长度数字,例如 array(100, 104),并且我需要存储很多数字,我以为我会很快超过最大值。

编辑 1 我非常喜欢 Omar 的回答,但我不确定如何提取数据。

4

4 回答 4

5

虽然您可以将它们存储为?D数组,但您可能需要考虑另一种方法:

$stuff = array (
  'floor1' => 
  array (
    'NumSpots' => 100,
    'handicap' => array (15,16,17),    
    'motorcycle' => array (47, 62),
    'other' =>  array (99, 100),
    ),
  ),
  'floor2' => 
    'NumSpots' => 100,
    'handicap' => array (15,16,17),    
    'motorcycle' => array (47, 62),
    'other' => array (99, 100),
    ),
  )
)

这样,您可以通过 mroe 有意义的名称访问事物,例如

$stuff['floor1']['motorcycle'][2]
于 2012-09-18T21:37:32.963 回答
2

在 php 中,您可以为数组命名键。数组中的每个元素都可以有不同的类型,因此您可以拥有

$floors = array(
    1 => array(
            'num_spots' => 100,
            'handicap' => array(15,16,17)
        ),   

    2 => array(
            'num_spots' => 100,
            'handicap' => array(15,16,17),
            'motorcycle' => array (47,62)
        )
);

ETC...

于 2012-09-18T21:32:20.013 回答
1

你完全可以这样做。例子:

$a = array();
$a[1] = array(
    'spots' => 100,
    'handicap' => array(5,3,5)
);
$a[2] = array(
    'spots' => 50,
    'handicap' => array(1,3,20)
);
var_dump($a);

输出:

array
  1 => 
    array
      'spots' => int 100
      'handicap' => 
        array
          0 => int 5
          1 => int 3
          2 => int 5
  2 => 
    array
      'spots' => int 50
      'handicap' => 
        array
          0 => int 1
          1 => int 3
          2 => int 20

您可以将数组索引用于楼层编号,也可以为此使用单独的键/值。

于 2012-09-18T21:30:16.003 回答
1

就像是...

$floors = array();
$floors[1] => array(
    Spaces => 100,
    Handicapped => array(15, 16, 17),
    Motorcycle => array(47, 62),
    Other => array (1, 2, 3, ..., n)
)

然后,您可以将值检索为...

$Floor1Spaces = $floors[1]['Spaces']; //An integer
$Floor1HAndicapped = $floors[1]['Handicapped']; //A 1-dimensional array of integer
于 2012-09-18T21:32:51.400 回答