2010-04-15 42 views
1

我正在试图确定一个数组的数据结构,该数组有一个密钥的日期和作为值消耗的带宽量。如何在PHP中创建并填充非均匀结构的数组?

例子

Key  Consumed   Policy    
October 50     Basic 
November 75     Basic 
December 100    Basic 

几个月,但不是全部,将有超过一个的政策。在这种情况下,一旦显示总数,我需要按政策分解它们。因此,对于上面的例子,假设12月有3个策略。然后我从我的数组构造表需要显示:

Key  Consumed   Policy    
October 50     Basic 
November 75     Basic 
December 100    .. 
December 25     Basic 
December 25     Extended 
December 50     Premium 

难道所有这些数据在阵列中表示?

$ myArray ['december']与其他数据结构是不同的数据结构,因为它需要最后一个条目,可能是另一个数组,它具有作为键的策略名称和作为值消耗的数据量。 PHP是否允许不均匀结构的数组?即十月和十一月的关键字在其关键字下只有两个条目,而十二月有两个条目加上第三个是另外的数组。

我最好的猜测是一样的东西:

Array (
    [October] => "50", "Basic" 
    [November] => "75", "Basic" 
    [December] => "100", "..", Array([Basic] => 25 
             [Extended] =>25 
             [Premium] => 50 
                ) 
     ) 

我的问题是,如果这是可能的,如何声明,并用PHP值来填充它。预先感谢您的任何澄清或协助!

回答

2

保持您的数据结构简单易懂。担心操作时的复杂性。

考虑如下的结构:

<?PHP 
$usageData = array(
    'December' => array(
    'policy' => array(
     'Basic'=>50, 
     'Extended'=>25, 
     'Premium'=>25 
    ) 
), 
    'January' => array(
    'policy'=> array(
     'Basic'=>50 
    ) 
) 
); 

现在,要生成一个报告,所以......

<?PHP 
function report($usage){ 
    foreach($usage as $month=>$data){ 
    if (count($data) > 1){ 
     echo "{$month}\t..\t" . array_sum($data). "\n"; 
    } 
    foreach($data as $policy=>$usage){ 
     echo "{$month}\t{$policy}\t{$usage}\n"; 
    } 
    } 
} 

将产生你在你的问题的例子使用的报告。

+0

感谢您的回答,这非常有帮助。 – stormist 2010-04-19 01:46:12