如何在PHP中创建和填充非均匀结构化数组?

时间:2010-04-15 05:42:17

标签: php arrays multidimensional-array

我正在尝试确定数据的数据结构,该数组具有密钥的日期和作为值消耗的带宽量。

实施例

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填充它的值。提前感谢您的任何澄清或帮助!

1 个答案:

答案 0 :(得分: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";
    }
  }
}

这将生成您在问题中用作示例的报告。