Re: multi dimensional array question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks! I'll agree with you abotu ur points, i just started php few days ago..so i am in the first phase of learnign it...and this list is so gr8! thanks evrybody 

cheers, Nick
On May 1, 2010, at 6:11 PM, Programming Guides wrote:

> On Fri, Apr 30, 2010 at 7:33 PM, Nick Balestra <nick@xxxxxxxxxxxx> wrote:
> 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";
> 
> 
> 
> 
> 
> I actually prefer your solution - it's easier to read and understand. On the other hand the solution the book offers has the advantage of being more extensible in that more pieces of information can be added per city.
> 
> One thing I dont like about both solutions is that they both intertwine computation logic with presentation. A *much* better approach in this case is to first calculate all population data you need and put together one data structure that has all of that. Only after you have that ready do you begin to output HTML. And while outputting HTML the only PHP you should need is to iterate over your data structure and output.
> 
> -- 
> http://programming-guides.com


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux