Best deal sorting:
This is a function that will sort an array with integer keys (weight) and float values (cost) and delete 'bad deals' - entries that are more costly than other entries that have greater or equal weight.
Input: an array of unsorted weight/cost pairs
Output: none
function BEST_DEALS($myarray)
{ // most weight for least cost:
// © Peter Kionga-Kamau, http://www.pmkmedia.com
// thanks to Nafeh for the reversal trick
// free for unrestricted use.
krsort($myarray, SORT_NUMERIC);
while(list($weight, $cost) = each($myarray))
{ // delete bad deals, retain best deals:
if(!$lastweight)
{
$lastweight=$weight;
$lastcost = $cost;
}
else if($cost >= $lastcost) unset($myarray[$weight]);
else
{
$lastweight=$weight;
$lastcost = $cost;
}
}
ksort($myarray);
}
krsort
(PHP 4, PHP 5)
krsort — Trie un tableau en sens inverse et suivant les clés
Description
bool krsort
( array
&$array
[, int $sort_flags = SORT_REGULAR
] )
krsort() trie le tableau array
en ordre inverse et suivant les clés, en maintenant la correspondance
entre les clés et les valeurs. Cette fonction est pratique pour
les tableaux associatifs.
Liste de paramètres
-
array -
Le tableau d'entrée.
-
sort_flags -
Vous pouvez modifier le comportement de cette fonction en utilisant le paramètre optionnel
sort_flags. Pour plus de détails, voyez le manuel pour la fonction sort().
Valeurs de retour
Cette fonction retourne TRUE en cas de
succès ou FALSE si une erreur survient.
Exemples
Exemple #1 Exemple avec krsort()
<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
L'exemple ci-dessus va afficher :
d = lemon c = apple b = banana a = orange
Voir aussi
- arsort() - Trie un tableau en ordre inverse
- ksort() - Trie un tableau suivant les clés
- Les fonctions de tri des tableaux
peter at pmkmedia dot com ¶
9 years ago
Anonymous ¶
7 years ago
To create a natural reverse sorting by keys, use the following function:
<?php
function natkrsort($array)
{
$keys = array_keys($array);
natsort($keys);
foreach ($keys as $k)
{
$new_array[$k] = $array[$k];
}
$new_array = array_reverse($new_array, true);
return $new_array;
}
?>
lolo at phpheaven dot net ¶
12 years ago
If you want to emulate the krsort function for an older version of php, you can use this piece of code:
function KeyComp($a, $b)
{
return -(strcmp($a,$b));
}
function krsort($MyArray)
{
uksort($MyArray, "KeyComp");
}
Maybe obvious and useless, but who knows...
