Re: Array group and sum values.

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

 



On Tue, May 11, 2010 at 4:03 PM, Jim Lucas <lists@xxxxxxxxx> wrote:
> Paul Halliday wrote:
>> On Tue, May 11, 2010 at 2:25 PM, Jim Lucas <lists@xxxxxxxxx> wrote:
>>> Paul Halliday wrote:
>>>> I have this:
>>>>
>>>> while ($row = mysql_fetch_array($theData[0])) {
>>>>
>>>>     $col1[] = $row[0];
>>>>     $col2[] = lookup($row[1]); // this goes off and gets the country name.
>>>>
>>>> I then loop through col1 and col2 to produce something like this:
>>>>
>>>> 52    ARMENIA
>>>> 215   CANADA
>>>> 57    CANADA
>>>> 261   COLOMBIA
>>>> 53    EGYPT
>>>> 62    INDIA
>>>> 50    INDIA
>>>>
>>>> Is there a way I can group these?
>>>>
>>>> Thanks!


>>>>
>>> Group them??
>>>
>>> How about this
>>>
>>> while ($row = mysql_fetch_array($theData[0])) {
>>>
>>>    $col1[lookup($row[1])][] = $row[0];
>>>
>>> which, using the data you showed, will give you this
>>>
>>>
>>> Array
>>> (
>>>    [ARMENIA] => Array
>>>        (
>>>            [0] => 52
>>>        )
>>>
>>>    [CANADA] => Array
>>>        (
>>>            [0] => 215
>>>            [1] => 57
>>>        )
>>>
>>>    [COLOMBIA] => Array
>>>        (
>>>            [0] => 261
>>>        )
>>>
>>>    [EGYPT] => Array
>>>        (
>>>            [0] => 53
>>>        )
>>>
>>>    [INDIA] => Array
>>>        (
>>>            [0] => 62
>>>            [1] => 50
>>>        )
>>>
>>> )
>>>
>>> --
>>> Jim Lucas
>>>
>>>   "Some men are born to greatness, some achieve greatness,
>>>       and some have greatness thrust upon them."
>>>
>>> Twelfth Night, Act II, Scene V
>>>    by William Shakespeare
>>>
>>
>> I was actually hoping to have them arranged like:
>>
>> $col1[0] = INDIA
>> $col2[0] = 112
>> $col1[1] = CANADA
>> $col2[1] = 272
>> ...
>>
>> Thanks.
>>
>
> Well, then take what I gave you and do this:
>
> $group[lookup($row[1])][] = $row[0];
>
> foreach ( $group AS $x => $y )
> {
>        $col1[] = $x;
>        $col2[] = array_sum($y);
> }
>
>
> In the end you will end up with this
>
> <plaintext><?php
>
> $data = array(
>                array(52,       'ARMENIA'),
>                array(215,      'CANADA'),
>                array(57,       'CANADA'),
>                array(261,      'COLOMBIA'),
>                array(53,       'EGYPT'),
>                array(62,       'INDIA'),
>                array(50,       'INDIA'),
>                );
>
> foreach ( $data AS $row )
> {
>        $group[$row[1]][] = $row[0];
> }
>
> print_r($group);
>
> foreach ( $group AS $x => $y )
> {
>        $col1[] = $x;
>        $col2[] = array_sum($y);
> }
>
> print_r($col1);
> print_r($col2);
>
>


Perfect! and a lot simpler than I thought.

Thanks.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[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