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.
精彩评论