Hoogste waarde array

Status
Niet open voor verdere reacties.

MaikelvBeek

Gebruiker
Lid geworden
31 mei 2007
Berichten
170
Ik krijg het niet voor elkaar om de hoogste waarde bij "order" te krijgen en dan van die waarde de "name" laten zien.

Kan iemand me misschien helpen.
Ben al uren aan het zoeken.

Alvast bedankt

Code:
$optiomodarr = array();
	$optiomodarr[] = array("name"=>"Voorbeeld 1","flyer"=>"test 1","order"=>"2");
	$optiomodarr[] = array("name"=>"Voorbeeld 2","flyer"=>"test 2","order"=>"1");
	$optiomodarr[] = array("name"=>"Voorbeeld 3","flyer"=>"test 3","order"=>"5");
	$optiomodarr[] = array("name"=>"Voorbeeld 4","flyer"=>"test 4","order"=>"3");
	$optiomodarr[] = array("name"=>"Voorbeeld 5","flyer"=>"test 5","order"=>"4");
 
Je kunt de array_multisort functie gebruiken hiervoor:

PHP:
// maak een aparte array met de sorteer-kolom
$sort_column = array();
foreach( $optiomodarr as $option ) {
  $sort_column[] = $option['order'];
}
// sorteer de hoofd array op de sorteer array met multisort
array_multisort( $sort_column, SORT_DESC, $optionmodarr );

Dat her-indext wel alle keys en de sortering is permanent; onder key [0] zit nu degene met de hoogste order.

Je kunt ook een zoek algoritme gebruiken om de juiste key te vinden:

PHP:
$top = false;
$found_key = false;
foreach( $optiommodarr as $key => $values ) {
  if ( $top === false || $values['order'] > $top ) {
    $top = $values['order']; $found_key = $key;
  }
}
// $found_key bevat nu de key met de hoogste order, en $top bevat de waarde van de hoogste order

Of, als deze data uit een database komt (wat ie in het voorbeeld niet doet) kun je in je query een ORDER BY opnemen.

Wat de beste oplossing is voor jou ligt een beetje aan de toepassing. Scripts zijn voorbeelden, niet getest :P Ze doen het wel denk ik maar ik zou ze voor de zekerheid even nalopen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan