PHP Development
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me

The Shed is going Social! Join us on FaceBook and Twitter and chime in on the conversation.

Go Back   Dev Shed ForumsProgramming LanguagesPHP Development

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Dev Shed Forums Sponsor:
  #1  
Old February 16th, 2013, 10:21 AM
Coopercentral Coopercentral is offline
Coopercentral
Dev Shed Newbie (0 - 499 posts)
 
Join Date: Aug 2002
Location: Rochester, NY
Posts: 24 Coopercentral User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 1 h 38 m 35 sec
Reputation Power: 0
Send a message via AIM to Coopercentral
Sorting an array by key/value

Hi:

For my poll I put the results into an array, such as this:

[Choice1] => "0",
[Choice2] => "1",
[Choice3] => "0",
[Choice4] => "0"

The key is the choice and the value is the number of votes. Basically, when the results show, I want to order by the number of votes (most at the top) but then also keep the same sort. For example, if there were NO VOTES, it would show in this order:

Choice1
Choice2
Choice3
Choice4

But, with "Choice2" having 1 vote, it would show:

Choice2
Choice1
Chioce3
Choice4

I asked this years ago, but absolutely was not able to find it. Possibly it was through a private message. I could have sworn someone created a custom "usort" function. Would someone be able to help me out with this?

Reply With Quote
  #2  
Old February 16th, 2013, 11:07 AM
E-Oreo's Avatar
E-Oreo E-Oreo is offline
Lost in code
Click here for more information.
 
Join Date: Dec 2004
Posts: 7,931 E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)E-Oreo User rank is General 90th Grade (Above 100000 Reputation Level)  Folding Points: 945 Folding Title: Novice Folder
Time spent in forums: 2 Months 7 h 43 m 47 sec
Reputation Power: 6991
What you're looking for is called a stable sort. PHP's standard array sorting functions use an unstable implementation of quicksort, so those won't work as you've found.

You could accomplish this using array_multisort, by sorting by both the value and the key.

With the data structure you have now you could not do this with any of the u*sort functions, but if you modified the data structure and added another dimension so that it looked like the following then you could:
PHP Code:
array(
  array(
    
'choice' => 1,
    
'votes' => 0,
  ),
  array(
    
'choice' => 2,
    
'votes' => 1,
  ),



Your comparison function would just need to take into account both subindexes.
__________________
PHP FAQ
How to program a basic, secure login system using PHP

Quote:
Originally Posted by Spad
Ah USB, the only rectangular connector where you have to make 3 attempts before you get it the right way around

Reply With Quote
Reply

Viewing: Dev Shed ForumsProgramming LanguagesPHP Development > Sorting an array by key/value

Developer Shed Advertisers and Affiliates



Thread Tools  Search this Thread 
Search this Thread:

Advanced Search
Display Modes  Rate This Thread 
Rate This Thread:


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
View Your Warnings | New Posts | Latest News | Latest Threads | Shoutbox
Forum Jump

Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
  
 


Powered by: vBulletin Version 3.0.5
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

© 2003-2013 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap