Re: multi dimensional array question
| From: | Nick Balestra | Date: | Sat, 01 May 2010 00:33:27 +0000 |
| Subject: | Re: multi dimensional array question | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-304797@lists.php.net to get a copy of this message | ||
thanks Piero!
i was trying to solve an excercise on "learning php5" (O'reilyl) book.
I am happy abotut his solution with the array_sum funtion you suggested, and my multidimensional
array make much more sense to mee then they suggested solution that also much more line of code
comapred...
look: my solution (with Piero suggeston): and ont he bottom the book solution. what do u say is the
best one? why? i am learning so i am interested in understanding why a solution can be better then
an other...
$us_census = array('NY' => array('New York' => 8008278),
'CA' => array('Los Angeles' => 3694820,
'San Diego' => 1223400),
'IL' => array('Chicago' => 2896016),
'TX' => array('Houston' => 1953631,
'Dallas' => 1188580,
'San Antonio' => 1144646),
'PA' => array('Philadelphia' => 1517550),
'AZ' => array('Phoenix' => 1321045),
'MI' => array('Detroit' => 951270));
print
"<table><tr><th>State</th><th>City</th><th>Population</th><th>Total</th></tr>";
foreach ($us_census as $state => $cities) {
foreach ($cities as $city => $habitants){
$tothabitants += $habitants;
print
"<tr><td>$state</td><td>$city</td><td>$habitants</td><td></td></tr>";
}
}
print
"<tr><td></td><td></td><td></td><td>$tothabitants</td></tr></table>";
foreach ($us_census as $state => $cities) {
$population_per_state = array_sum($cities);
print "$state $population_per_state<br>";
}
--------------------------
the book solution:
$population = array('New York' => array('state' => 'NY',
'pop' => 8008278),
'Los Angeles' => array('state' => 'CA', 'pop' =>
3694820),
'Chicago' => array('state' => 'IL', 'pop' =>
2896016),
'Houston' => array('state' => 'TX', 'pop' =>
1953631),
'Philadelphia' => array('state' => 'PA', 'pop' =>
1517550),
'Phoenix' => array('state' => 'AZ', 'pop' =>
1321045),
'San Diego' => array('state' => 'CA', 'pop' =>
1223400),
'Dallas' => array('state' => 'TX', 'pop' =>
1188580),
'San Antonio' => array('state' => 'TX', 'pop' =>
1144646),
'Detroit' => array('state' => 'MI', 'pop' =>
951270));
$state_totals = array( );
$total_population = 0;
print
"<table><tr><th>City</th><th>Population</th></tr>\n";
foreach ($population as $city => $info) {
$total_population += $info['pop'];
$state_totals[$info['state']] += $info['pop'];
print "<tr><td>$city,
{$info['state']}</td><td>{$info['pop']}</td></tr>\n";
}
foreach ($state_totals as $state => $pop) {
print "<tr><td>$state</td><td>$pop</td>\n";
}
print
"<tr><td>Total</td><td>$total_population</td></tr>\n";
print "</table>\n";