Miten saisin tulostettua ensin aakkosjärjestykseen $r1 ja sitten suuruus järjestykseen $ti, nyt järjestys tulee aina
$c1 mukaan joka on .txt tiedostossa ensimmäisenä. Kiitos
neuvoista...nöyrimmin.
$tiedot = explode("|", $viestit[$i], 9); //erotellaan tiedot omiin muuttujiinsa $ti = $tiedot[7]; $r1 = $tiedot[5]; $c1 = $tiedot[1]; $rat = $tiedot[2]; $seu = $tiedot[3]; $hev = $tiedot[4]; $aika = $tiedot[6]; $br = $tiedot[8]; $tul = " $ti $hev $rat $seu $c1 $r1 $aika $br "; //sort($tul, 7); echo " $tul ";
sort($tiedot) ton exploden jälkeen, ei siis toista parametria, en tiedä mitä tuo 7 tekee, mutta epäilen että tekee mitään, 0-3 taitaa olla noitten fläggien arvot.
ei toimi, siis ensin järjestetään $r1 aakkosiin ja sitten $ti numerot suuruus järjestykseen.
Tuolta oppia: https://www.php.net/array_multisort
Joo, mutta kun on tyhmä niin ei osaa.
Tuolta Olgan antaman linkin takaa kolmas esimerkki on lähes suora ratkaisu ongelmaasi.
Teet vain tuon taulukkosi muotoon:
$data[$i]['ti'] = $tiedot[7]; $data[$i]['r1'] = $tiedot[5]; $data[$i]['c1'] = $tiedot[1]; //jne
Edit. pikku säätöä taulukon kanssa
No tein noin ja kokeilin vaikka mitä, tulostaa tiedot, mutta järjestys ei toimi
$tiedot = explode("|", $viestit[$i], 9); //erotellaan tiedot omiin muuttujiinsa $data[$i]['ti'] = $tiedot[7]; // tämä toiseksi suuruus järjestykseen $data[$i]['r1'] = $tiedot[5]; // tämä ensin aakkosjärjestykseen $data[$i]['c1'] = $tiedot[1]; $data[$i]['rat'] = $tiedot[2]; $data[$i]['seu'] = $tiedot[3]; $data[$i]['hev'] = $tiedot[4]; $data[$i]['aika'] = $tiedot[6]; $data[$i]['br'] = $tiedot[8]; $tul = " $tiedot[7] $tiedot[5] $tiedot[1] $tiedot[3] $tiedot[2] $tiedot[4] $tiedot[6] $tiedot[8] "; // tämä toimii echo " $tul ";
Missä kohtaa sulla on se array_multisort()?
Edit. Eikun tipuin jo kärryiltä... Mitähän yrität siis nyt oikein tehdä? Miksei tuo echo $tul
muka toimi? Ota noi muuttujat pois merkkijonon sisältä, niin sitten pitäs ainakin toimia. No, nyt pitää kiiruhtaa jo kouluun... Kevään viimenen tentti - toivottavasti jopa elämäni ;)
Warning: array_multisort(): Argument #1 is expected to be an array or a sort flag in d:\serveri\eho\ilmot\jaana.php on line 34
6343134411 poni 70 cm e e e 06.04.06 11:50
$tiedot = explode("|", $viestit[$i], 9); //erotellaan tiedot omiin muuttujiinsa $data[$i]['ti'] = $tiedot[7]; // tämä toiseksi suuruus järjestykseen $data[$i]['r1'] = $tiedot[5]; // tämä ensin aakkosjärjestykseen $data[$i]['c1'] = $tiedot[1]; $data[$i]['rat'] = $tiedot[2]; $data[$i]['seu'] = $tiedot[3]; $data[$i]['hev'] = $tiedot[4]; $data[$i]['aika'] = $tiedot[6]; $data[$i]['br'] = $tiedot[8]; array_multisort($tiedot[7], SORT_NUM, $tiedot[5], SORT_ASC, $data); $tul = " $tiedot[7] $tiedot[5] $tiedot[1] $tiedot[3] $tiedot[2] $tiedot[4] $tiedot[6] $tiedot[8] "; // tämä toimii echo " $tul ";
Et tainnut edes lukea tuota manuaalisivua =/
Mutta siis multisort järjestää jonkun taulukon jonkun toisen taulukon/taulukoiden mukaan. Eli nuo tiedot minkä mukaan haluat järjestyksen suoritettavan pitää ensin laittaa johonkin toiseen taulukkoon, tämän voi tehdä monellakin eri tavalla mutta tässä yksi nopeasti kasattu esimerkki.
Järjestää tiedoston ensin pisteiden ja sitten nimen mukaan, tiedosto muotoa id|nimi|pisteet.
$dataarray = $pointsarray = $namesarray = array(); $data = file('array_multisort.dat'); foreach( $data as $datarow ) { $datarow = explode('|', $datarow); $dataarray[] = $datarow; $pointsarray[] = $datarow[2]; $namesarray[] = $datarow[1]; } array_multisort($pointsarray, SORT_NUMERIC, SORT_DESC, $namesarray, SORT_STRING, SORT_ASC, $dataarray); foreach( $dataarray as $datarow ) { echo "{$datarow[1]} ( {$datarow[2]} pistettä )<br />"; }
Tuosta ei luulisi olevan kovin vaikeaa muokata haluamaasi mutta kysy ihmeessä jos ei ota onnistuaakseen.
No siis, tossa oletettavasti on vain osa koodistasi? Ajat tuota jonkun loopin sisällä. Voisin arvata, että käyt tuossa jotain tekstitiedostoa läpi?
Pointti on se, että ensin muodostat sen taulukon ja vasta sen loopin jälkeen kun taulukko on muodostettu, ajat sen array_multisort():in läpi. Ja mitä tuohon virheilmoitukseen tulee, niin siitä käy aika selkeesti myös ilmi, mikä sulla tuossa on ongelmana: ensimmäinen argumentti ei ole taulukko. Ja ei olekkaan, $tiedot[7] on taulukon alkio, $tiedot on se taulukko. Mutta et tuolla $tiedot-taulukon avulla kuitenkaan sitä $data-taulukkoa pysty järjestämään, vaan sitä varten sinun on tehtävä erilliset taulukot. Katso tuota manuaalin esimerkkiä vielä kerran. Siinä se on mielestäni niin rautalangasta väännetty, että turhaan sitä täällä enää uudestaan selittää.
Edit: Hidas
Ai niin ja olenhan kirjoittanut myös koodivinkin tekstitiedoston tietojen listauksesta ja järjestämisestä.
Hei ja sorry kaikille, hyvistä neuvoista. Olen kuitenkin niin alussa tässä PHP:ssä etten tajunnut kuinka monimutkainen juttu tää onkin, jätetään tää tältä erää ja palataan myöhemmin kun opettelen ensin noita yksinkertaisempia juttuja.
Aihe on jo aika vanha, joten et voi enää vastata siihen.