Re: Array group and sum values.

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

 



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);









-- 
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

-- 
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