Re: Array count for each value in turn syntax? [message #169867 is a reply to message #169864] |
Wed, 29 September 2010 00:22 |
Hamish Campbell
Messages: 15 Registered: September 2010
Karma:
|
Junior Member |
|
|
On Sep 29, 12:41 pm, GarryJones <mor...@algonet.se> wrote:
> An array contains the values 109,110,117
>
> The table contains
>
> ItemTypeCode - ItemData
>
> 109 njj
> 109 jfdjf
> 109 mdmd
> 109 jdjd
> 110 jf
> 110 jfjf
> 117 jgjg
> 117 jfjfjf
> 118 nfnf
>
> I want to use the array to give me the results of how many there are
> of each type
>
> So the output would be
> 109 = 4
> 110 = 2
> 117 = 2
> (in this case the entries for type 118 are not displayed because 118
> it not in the array)
>
> The table data is just an example, in my actual table its a few more
> columns.
>
> I plan to show these in a table with bold row headings with
> statistical data before the actual data rows
>
> The row headings will need to contain the number of data rows in the
> following data rows belonging to its type.
>
> I can run through the array and use a counter, then output the number
> then run through the array again to display the data. I am guessing I
> don't have to do that, surely these is some kind of "how many are" php
> command? But I am stuck here.
>
> Any help greatly appreciated.
>
> Garry Jones
> Sweden
The MySQL manual has an example that should be instructive:
<http://dev.mysql.com/doc/refman/5.0/en/group-by-
functions.html#function_count>
If you want to count the number of array items with the same value, it
would be very inefficient to iterate through the array for each item.
One simple way would look like:
<?php
$items = array(
"apple", "banana", "apple", "pear", "orange", "pear", "apple"
);
$totals = array();
// Count totals for each $items key:
foreach($items as $item)
isset($totals[$item]) ? $totals[$item] = 1 : $totals[$item]++;
print_r($totals);
// result: Array ( [apple] => 3 [banana] => 1 [pear] => 2 [orange] =>
1 )
|
|
|