Olen monen epätoivoisen yrityksen jälkeen tullut tulokseen että ei toimi, joten ajattelin täältä löytyvän avun.
Eli minulla on txt tiedosto jossa on tiedot tyyliin:
martti|20|40|30
pertti|10|45|21
juha|23|28|12
Eli nuo tiedot on array:ssä ja pitäisi saada funktio joka järjestää arrayn ensinmäisen arvon mukaan eli: *|arvo|*|* .
Miten tämän voisi tehdä? Mielellään jotain esimerkkiä toimivasta.
Voi tähän helpompikin ratkaisu olla, mutta itse olen käyttänyt kuplalajittelua:
<?php //luetaan tiedot sisältävä tiedosto taulukkoon $t=file("jarj.txt"); //jaetaan rivit alkioihin |-merkin kohdalta for ($i=0;$i<count($t);$i++) { $t[$i]=explode("|", $t[$i]); } //kuplalajittelu for ($i=0;$i<count($t)-1;$i++) { for ($j=0;$j<count($t)-1;$j++) { if ($t[$j][1]>$t[$j+1][1]) { $v=$t[$j+1]; $t[$j+1]=$t[$j]; $t[$j]=$v; } } } //yhdistetään alkiot jälleen |-merkillä ja näytetään ne for ($i=0;$i<count($t);$i++) { $t[$i]=implode($t[$i], "|"); echo $t[$i]."<br>"; } ?>
Tärkeä rivi on:
if ($t[$j][1]>$t[$j+1][1]) {
[1] on se alkio, jonka mukaan taulukko järjestellään. Järjestyksen suunta on > (pienimmästä suurimpaan) tai < (suurimmasta pienimpään).
Minä tykkään käyttää kaksiulotteisten taulukoiden kanssa PHP:n omaa usort()-funktiota.
Kiitos noista. Homma ratkesi tosin huomasin pari bugia tuossa ekassa kun käytti jotain muuta alkiota kuin 1 mutta tuo on aika helposti korjattavissa..
halusit siis järjestää tiedoston rivien ensimmäisen puretun tiedon?
tässä tapauksessa:
$filu = file("tiedosto.txt"); sort($filu, SORT_STRING); $max = count($filu)-1; for($u = 0; $u <= $max; $u++){ $osa = explode("|", $filu[$u]); print"$osa[0]<br>"; }
jos ei järjestä oikei nii pistä jokaseen ensimmäiseen tietoon välilyönti sen tiedon jälkeen ku se tieto tallennetaa, nii sit pitäis toimii.
Tuo on ihan hyvä muuten mutta rivit pitää pysyä kasassa vain olla järjestyksessä array:ssä
no jos tota vähän muokkaa niin helposti sen saa semmoseks ku halusit ;)
Niinpä kai se sitten on. Mutta ongelma ratkesi tuon ensinmäisen vinkin avulla kun sitä muutin tarpeisiini :)
Niin tuli tuossa vielä mieleen että millä saisi selville kaikki asetetut muuttujat, kun tuo olisi kätevä degub väline kun noita muuttujia tuntuu olevan minulla aivan liikaa ja muisti ei riitä.
Eli kaikki muuttujat löytyy GLOBALS-taulusta. Ihan testaamatonta koodia, mutta näin itse yrittäisin:
Kannattaisi tehdä mielummin funktio, mikä listaa kaikki muuttujat, ja jos on taulukko niin kutsutaan funktiota rekursiivisesti listaamaan sen taulukon muuttujat jne jne. Sitten saadaan koko taulukkokin tulostettua.. Tietenkin voi käyttää myös print_r() -funktiota.
Aihe on jo aika vanha, joten et voi enää vastata siihen.