开发者

How do I create and populate a non-uniformly structured array in PHP?

I am trying to decide on a data structure for an array that has a date for the key and the amount of bandwidth consumed as values.

examples

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

Some months, but not all, will have more than one policy. In that case, I need break them down by policy once the total is shown. So for the above example, assume December had 3 policies. The table i construct from my array would then need to show:

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

Could all this data be represented in an array ?

$myArray['december'] would be a different data structure than the others because it would need a last entry, probably another array, that had the policy names as keys and the amount of data consumed as values. Does PHP allow 开发者_C百科for arrays that are not structured uniformly? i.e. key october and November have only 2 entries under their key while December has 2 entries plus a 3rd which is an additional array.

My best guess is something like:

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

My question is if this is possible and how to declare it and populate it with values with PHP. Thanks in advance for any clarifications or assistance!


Keep your data structure simple and easy to understand. Worry about the complexity when you operate on it.

Consider a structure like:

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

Now, you want to generate a report, so...

<?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";
    }
  }
}

Which will produce the report you use as an example in your question.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜