Autor | Zpráva | ||
---|---|---|---|
Vilak Profil |
#1 · Zasláno: 8. 11. 2016, 20:14:06
Zdravím. Mám pole v php, ve které mám X čísel. Vím, že tato čísla jsou PŘIROZENÁ ČÍSLA. Jak to mám udělat, aby se mi duplicity přepsali třeba na nejvyšší možné číslo, pokud tam nějaká taková duplicita je?
Např.: Pole "Rank" obsahuje: 1;3;2;5;3;8;6;4;5;3 a chci to udělat tak, aby tam bylo každé číslo právě jednou, jak? Tudíž chci, aby se z duplicit staly nějaká jiná čísla, ale nevím, jak to udělat. Jen ještě chci dodat, že pořadí prvků musí byt stejné. Má někdo nějaký nápad? :) |
||
Keeehi Profil |
#2 · Zasláno: 8. 11. 2016, 21:24:26
Vilak:
Moc to nedává smysl. Hlavně to, že je ti jedno, na co se to změní. Na co to chceš využívat? |
||
Vilak Profil |
#3 · Zasláno: 8. 11. 2016, 21:38:21
Na pořadí. Ovšem když se někdo splete, ať to udělá nějaké jiné číslo. Nejlépe nejvyšší.
|
||
juriad Profil |
function renumber($arr) { $next = max($arr) + 1; # toto bude hodnota použitá pro náhrady $uniq = array_flip($arr); # převedeme na pole [hodnota => poslední výskyt] foreach ($arr as &$el) { # projdeme pole (prvky jsou reference, aby se do nich dalo přiřazovat) if ($uniq[$el] !== NULL) { # pokud je v poli $uniq $uniq[$el] = NULL; # tak ho od tamtud smažeme } else { # druhý a další výskyt $el = $next++; # nahradíme za hodnotu větší než maximum a to následně zvětšíme } } return $arr; # pole vrátíme } var_dump(renumber([1,3,2,5,3,8,6,4,5,3])); |
||
Vilak Profil |
#5 · Zasláno: 9. 11. 2016, 10:06:06
juriad:
Super. Díky moc! Přesně toto jsem potřeboval. :) |
||
Časová prodleva: 8 let
|
0