存储3级信息需要多维数组?

时间:2014-05-07 20:29:37

标签: php arrays multidimensional-array

我正在开发一个PHP脚本来保存大量信息。 让我们试着解释一下我们的情况吧!

我实际上有33个不同的电台。 对于33个站中的每个站,我有5个不同的类别。 对于每个有5个不同类别的33个站点,我每个类别有37个不同的值。

我需要一个2d的3d数组来存储这些信息吗?

谢谢!

5 个答案:

答案 0 :(得分:1)

听起来像关系数据库的工作!

但是你的初步假设是正确的。您需要一个三维数组来保存您的信息,因为您的数据有3层:站点,类别和值。

答案 1 :(得分:1)

这个

的php数组没问题
$MyArray = array('Station1' => array('Category1' => 
                                      array('Value1'=> 1000,'Value2'=> 1001), 
                                     'Category2' => array('Value1' => 2332)), etc...
                 'Station2' => array('Category1' => 
                                      array('Value1'=> 1000,'Value2'=> 1001), 
                                     'Category2' => array('Value1' => 2332)), etc
                 etc

 );

答案 2 :(得分:1)

这样的东西可行,只需根据需要添加更多数据:

$station_array =  
    array(
        'station1' => array(
            'cat1' => array ('val1','val2','val3'),
            'cat2' => array ('val1','val2','val3'),
            'cat3' => array ('val1','val2','val3')
        ),
        'station2' => array (
            'cat1' => array ('val1','val2','val3'),
            'cat2' => array ('val1','val2','val3'),
            'cat3' => array ('val1','val2','val3')
        ),
        'station3' => array (
            'cat1' => array ('val1','val2','val3'),
            'cat2' => array ('val1','val2','val3'),
            'cat3' => array ('val1','val2','val3')
        )
    );

答案 3 :(得分:0)

在关联数组中传递两个以上的维度后,最好开始考虑使用对象来存储信息。对象使得理解事物的组织变得容易得多,它们可以强制对数据进行验证限制(确保它的形式应该是这样),并且可以调用数据上的函数来操作它(而不是随机外部)函数操纵你的整个数组)。一个例子是:

class CategoryValue {
    var $val; // your value

    function __construct($val) {
        $this->val = $val;
    }
}

class Category {
    var $values = array(); // an array of CategoryValue objects

    function addValue(CategoryValue $val) {
        $this->values[] = $val;
    }
}

class Station {
    var $categories = array(); // an array of Category objects

    function addCategory(Category $category) {
        $this->categories[] = $category;
    }
}

答案 4 :(得分:-1)

好吧,一切都取决于你想要实现的方式,如果你不需要遍历这些值,但你只想存储数据并且总是知道你想要得到什么,你可以使用哈希,表格会看起来像:

$data = array(
   md5('StationX'.'CategoryY'.'PropertyZ') => 'ValueU',
   md5('StationA'.'CategoryB'.'PropertyC') => 'ValueQ'
);

通过这种方式,您可以立即获取数据,当您想为PropertyZ添加值时,无需先检查是否为StationA初始化了CategoryB数组

  1. php将关联数组存储为技术上的hastables
  2. ...如果您真的坚持不使用数据库,那就是全部;)