Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialIban Dominguez
17,973 PointsGrouping Array by Values
Hi there!
I have an array that displays a list of events sorted by groups,
Here is my Code:
array(2) {
[2]=>
array(1) {
[0]=>
array(6) {
["date_ref"]=>
string(19) "2014-04-03 19:00:00"
["id"]=>
string(1) "2"
["ref"]=>
string(0) ""
["event_id"]=>
string(1) "1"
["group_id"]=>
string(1) "2"
["fee"]=>
string(2) "15"
}
array(1) {
[0]=>
array(6) {
["date_ref"]=>
string(19) "2014-04-28 19:00:00"
["id"]=>
string(1) "5"
["ref"]=>
string(0) ""
["event_id"]=>
string(1) "1"
["group_id"]=>
string(1) "2"
["fee"]=>
string(2) "45"
}
}
[3]=>
array(3) {
[0]=>
array(6) {
["date_ref"]=>
string(19) "2014-04-14 19:00:00"
["id"]=>
string(1) "2"
["ref"]=>
string(0) ""
["event_id"]=>
string(1) "2"
["group_id"]=>
string(1) "3"
["fee"]=>
string(2) "15"
}
[1]=>
array(6) {
["date_ref"]=>
string(19) "2014-04-21 19:00:00"
["id"]=>
string(1) "2"
["ref"]=>
string(0) ""
["event_id"]=>
string(1) "3"
["group_id"]=>
string(1) "3"
["fee"]=>
string(2) "15"
}
[2]=>
array(6) {
["date_ref"]=>
string(19) "2014-04-28 19:00:00"
["id"]=>
string(1) "2"
["ref"]=>
string(0) ""
["event_id"]=>
string(1) "4"
["group_id"]=>
string(1) "3"
["fee"]=>
string(2) "15"
}
}
}
I would like to output to the screen placing all events that belongs to same group and have the same fee in one line, example:
date Ref: 2014-04-28 19:00:00, group: 3, single-event-fee: 15, count: 2 events
date Ref: 2014-04-28 19:00:00, group: 3, single-event-fee: 25, count: 3 events
Thank you very much beforehand
3 Answers
Andrew Shook
31,709 PointsUse MySQL. So much easier to write a query for that than to write a function in PHP to loop through the array and compare values
Andrew Shook
31,709 PointsUse MySQL. So much easier to write a query for that than to write a function in PHP to loop through the array and compare values
Michael Soileau
16,199 PointsJust to be thorough here, you can use array_sort and other PHP functions to sort an array. For a multi-indexed array, this is one option.
http://us3.php.net/manual/en/function.array-multisort.php
This can be useful if the information you are pulling isn't from a database (in which case you should use SQL syntax), but if you're pulling from a JSON request, you might have to format it manually.
Iban Dominguez
17,973 PointsIban Dominguez
17,973 PointsThanks Andrew,
I got it sorted using GROUP BY for values, GROUP_CONCAT for date strings, COUNT for the amount of grouped events and SUM for the total!
So much easier using mysql! Cant believe I wasted the whole day looping through the array!
Cheers!
Andrew Shook
31,709 PointsAndrew Shook
31,709 PointsGlad I could help. I often find it useful to run idea's by people and get a fresh perspective on things. Definitely helps prevent over engineering things.