witam.
jak sie odwraca kolajnosc liczb? ;) jest jakas inna funkcja? bo rsort(); to jak mam np.
1
3
5
6
2
7
to sortuje:
1
2
3
5
6
7
a ja chce:
7
6
5
3
2
1
;]
witam.
jak sie odwraca kolajnosc liczb? ;) jest jakas inna funkcja? bo rsort(); to jak mam np.
1
3
5
6
2
7
to sortuje:
1
2
3
5
6
7
a ja chce:
7
6
5
3
2
1
;]
array_reverse? Zerknij do manuala.
No jak to? rsort() sortuje od elementu najwiekszego do najmniejszego.
uzylem ksort i dziala, ale nie zortuje to co ma, mam taki kod:
[code]
// Funckja wyswietla 10 najlepszych zlomowan
function top10(){
global $dataF;
$plik = file($dataF);
$dane1 = chop($plik);
$dane2 = explode('|',$dane1);
$dane3 = count($plik);
$i = 0;
$n = 1;
while($i < $dane3){
$datas = $plik[$i];
$dane = explode('|',$datas);
$top[$i] = $dane[11].'|'.$i.'|'.$dane[9];
$i++;
$n++;
}
krsort($top,SORT_NUMERIC);
// sort($top, SORT_NUMERIC);
reset($top);
echo '
Num | Ksiezyc | Raport wojenny |
while(list($num,$dann) = each($top)){
if($num <= 9){
$danss = explode('|',$dann);
echo ''.++$num.'</td>'.$danss[0].'%</td>'.$danss[2].'</td></tr>';
}
}
echo '</table>';
}
[/code]
i w tym WHILE zeby wyswietlalo tylko 10 najlepszych, do zmiennej dodaje rozne badziewia, potem dziele i wyswietla ;) i to wlasnie przeszkadza, a nie wiem jak inaczej wywalic te zmienne na zewnatrz ;p
no dokładnie:
<?php
$bez = Array(1,3,5,6,2,7);
rsort($bez);
print_r($bez);
/*
Array
(
[0] => 7
[1] => 6
[2] => 5
[3] => 3
[4] => 2
[5] => 1
)
*/
?>
// no bo sortujesz stringa zawierającego jakieś jeszcze kreski i nie wiadomo co jako liczby no to jak chcesz mieć ładne wyniki ?
użyj array_multisort czy jakoś tak, coś w stylu:
<?php
// Funckja wyswietla 10 najlepszych zlomowan
function top10(){
global $dataF;
$plik = file($dataF);
$dane1 = chop($plik);
$dane2 = explode('|',$dane1);
$dane3 = count($plik);
$i = 0;
$n = 1;
while($i < $dane3){
$datas = $plik[$i];
$dane = explode('|',$datas);
$doposort[] = $dane[11]; // według których danych chcesz sortować ?
$top[] = $dane[11].'|'.$i.'|'.$dane[9];
$i++;
$n++;
}
array_multisort($doposort, SORT_NUMERIC, SORT_DESC, $top);
reset($top);
?>
dzieki, dziala :) jakby kogos to zainteresowalo to ta funkcja jest tutaj:
http://www.polanie.9x.pl/zwymiany/rw/?action=list&show=top10
pozdro
Witam,
Mam kod:
Problem mam taki, że nie sortuje i nie wiem dlaczego…
Ponieważ sort działa na tablicach, a nie na stringach rozdzielanych przecinkiem.
Kod jest trochę szalony, wygląda na to, że chcesz:
1,7,11,15,38,42,1,7,12,13,37,49,8,9,10,16,40,41
PS. Gratuluję odkopania 6 letniego tematu ;)
dzek69 napisał(a):
Ponieważ sort działa na tablicach, a nie na stringach rozdzielanych przecinkiem.
Kod jest trochę szalony, wygląda na to, że chcesz:
- Uzyskać w stringach posortowane liczby
- Złączyć stringi (ale już nie sortować)
- W efekcie chcesz otrzymać coś takiego:
1,7,11,15,38,42,1,7,12,13,37,49,8,9,10,16,40,41
Czy tak?PS. Gratuluję odkopania 6 letniego tematu ;)
Nie chciałem tworzyć nowego tematu.
Przedstawiłem część kodu który mi jest potrzebny.
Dokładnie potrzebuje żeby posortowane dane nie były wyświetlane ale zapisywane do bazy sql, a liczby pochodzą z inputa.
Dokładnie o to mi chodzi:
1 => 1,7,11,15,38,42 i to zapisuje do bazy (tymczasowo wyświetla przez echo żeby zobaczyć czy sotuje)
2 => 1,7,12,13,37,49
3 => 8,9,10,16,40,41
W takiej sytuacji jak stringa zamienić na tablicę ?
Luuk napisał(a):
(..)
W takiej sytuacji jak stringa zamienić na tablicę ?
explode?
noone_logged_out napisał(a):
explode?
Użyłem explode ale teraz mi pokazuje array zamiast liczb posortowanych
<?php $fruits[1] = '15,1,42,7,38,11'; $fruits[2] = '7,1,49,13,37,12'; $fruits[3] = '16,10,41,8,40,9'; for($w=1; $w<=3; $w++){ $arr = explode(",", $fruits[$w]); for($i=0; $i<=5; $i++){ $fruit[] = array($arr[$i]); } sort($fruit, SORT_NUMERIC); foreach ($fruit as $key => $val) { $dane[$w][] = $val; } $danecalosc = implode(",", $dane[$w]); echo $danecalosc.'Olśniło mnie ...
<?php $fruits[1] = '15,1,42,7,38,11'; $fruits[2] = '7,1,49,13,37,12'; $fruits[3] = '16,10,41,8,40,9'; for($w=1; $w<=3; $w++){ $fruit = explode(",", $fruits[$w]); sort($fruit, SORT_NUMERIC); foreach ($fruit as $key => $val) { $dane[$w][] = $val; } $danecalosc = implode(",", $dane[$w]); echo $danecalosc.'Tak na marginesie czy ten kot poprawnie jest napisany ? (spełnia swoją funkcję - najważniejsze.)
Dziękuję za pomoc.
Tak na marginesie czy ten kot poprawnie jest napisany ?
Całe to zdanie jest zwariowane, a ten "kot" to już w ogóle piękne.
Mnie się nie podobają losowe wcięcia np.
Przerwa na dowcip:
Maruiszek dostał 5 jabłek. Zjadł 3. Ile mu zostało? Pewnie myślisz, że 2? Guzik prawda... Nie wiadomo ile jabłek Mariuszek miał na początku. Morał - zawsze zeruj zmienne
Jeżeli zrobisz z powyższego kodu funkcję, to pół biedy, ale jak tu leci jakiś dłuższy strukturalny kod, to zastanów się nad zmienną $dane
.
To, że wrzucasz te liczby w tablice i potem ją łączysz też może trochę zbędne - szybsze wydaje się łączenie tego jako string już od razu (tylko potem jeszcze zostanie usunąć nadmiarowy przecinek na końcu, chyba, że zamiast foreach
użyjesz for
oraz count
, to wtedy ifem sprawdzisz czy to ostatni element i czy potrzeba przecinka).
Nazwy zmiennych kiepskie, ale jako początkujący też tak sobie nazywałem.
A ostatecznie - to jest php, skoro działa, to niech tak zostanie :D