Taulukon lukujen järjestämisestä

Tarkotus ois järjestää taulukon kohdat suuruusjärjestykseen siten, että niiden otsikot/nimet tulis myös mukaan samassa järjestyksessä, eli ei järjestetä pelkkiä lukuja.

Olen tekemässä testiä, jonka päätteeksi käyttäjä näkee taulukon, jossa eri tulokset on listattu suuruusjärjestykseen, esimerkiksi näin:

C 100 %
A 49 %
B 10 %

PHP:ssä näittäis toistaseks suurin piirtein tältä:

$luvut = array("A" => 49, "B" => 10, "C" => 100); // noi luvut ei tietenkään lue koodissa suoraan, mutta oikasin vähän
sort($luvut);
for($i=0; $i < count($luvut); $i )
{
echo "TÄHÄN AINA A, B tai C" . $luvut[$i] . " %";
}

Eli tossa menee luvut järjestyksessä, mutta miten noi nimet eli A, B ja C saa sen kyseisen luvun yhteyteen samalle riville? Tää on varmaan ihan yksinkertaista, mutta en tajua. Jos joku auttaa, niin kiitos.
10426
Äänestä

Muut lukivat myös

Vastaukset 10

Vanhimmat

Unohin lisätä koodiin , mutta eipä sillä ole väliä pääasian kannalta...

Äänestä
  • Eikun siis tr ja td... ne katoaakin kai itsestään...

    Äänestä

Onko jotenkin mahdollista esimerkiks tehä niin, että ois myös toinen array-taulukko, jossa olis ne lukujen nimet ja ne sais jotenkin järjestettyä samalla tavalla kuin nuo luvut?

Kokeilin tälleen...
-------------------------------------------------------------------------------------------
$luvut = array("A" => 49, "B" => 10, "C" => 100);
$nimet = array("A", "B", "C");
sort($luvut);
for($i=2; $i >= 0; $i--)
{
echo "¤TR¤¤TD¤" . $nimet[$i] . "¤TD¤" . $luvut[$i] . " %";
}

(¤-merkit korvaa niitä html-tagimerkkejä.)
-------------------------------------------------------------------------------------------
...mutta tuossa ne nimet järjestyy vaan omassa järjestyksessään eli C, B, A eikä lukujen (100, 49, 10) mukaan C, A, B... Mitenköhän tää pitäis oikein tehdä?

Äänestä
  • Hakasulkeet katos jonneki.

    Äänestä

  • Sdffggf kirjoitti:

    Hakasulkeet katos jonneki.

    Eikun siis aaltosulkeet...

    Huoh, spämmäilen vaan tänne.

    Äänestä

Niin varmaan oletkin jo keksinyt miten tehdään?

Taikasanat
http://fi.php.net/manual/en/function.asort.php (esimerkki valmis tarkoitukseesi)
http://fi.php.net/manual/en/control-structures.foreach.php

Juu ei mitään kahta arrayta, koska sorttauksessa menee järjestys sekaisin. Jos tarvitset enemmän tietoa tallentaa niin silloin

$esimerkkit = array();
$esimerkkit['a'] = array("A" => 9, "B" => 10, "C" => 100);
jne....

tällöin järjestaminen ja tulostaminen onnistuu helposti.

Todennäköisesti tietokannasta tulee noi?
Jolloin kannattaa järjestää suoraan tietokannan puolella eikä PHP:n.

Äänestä

Niin varmaan oletkin jo keksinyt miten tehdään?

Taikasanat
http://fi.php.net/manual/en/function.asort.php (esimerkki valmis tarkoitukseesi)
http://fi.php.net/manual/en/control-structures.foreach.php

Juu ei mitään kahta arrayta, koska sorttauksessa menee järjestys sekaisin. Jos tarvitset enemmän tietoa tallentaa niin silloin

$esimerkkit = array();
$esimerkkit['a'] = array("A" => 9, "B" => 10, "C" => 100);
jne....

tällöin järjestaminen ja tulostaminen onnistuu helposti.

Todennäköisesti tietokannasta tulee noi?
Jolloin kannattaa järjestää suoraan tietokannan puolella eikä PHP:n.

Äänestä
  • Kiitos! Nyt selkeni. Toi ylempi linkki kertoi oikeastaan kaiken. Eikä ole mitään tietokantaa ollenkaan, vaan ne luvut tulee siis lomakkeen perusteella.

    Näin yksinkertaista se olikin. Eli ei tarttenu tietää kun toi $key-juttu vaan oikeestaan. Ja foreach, mutta onkohan sillä väliä, käyttääkö foreach vai for...

    Äänestä

Niin hupsistas kun viesti tulikin kaks kertaa, eka ei tullut näkyviin joten lähetin uudestaan.

Se on periaatteessa ihan sama kumpaa käyttää, foreachin avulla on kuitenkin helpompi käydä taulukon tiedot läpi, for/while taas jos tarvitaan x määrä toistoja. Tolla periaatteella olen itse noita käytellyt. Kun vielä opettelee http://fi.php.net/manual/en/control-structures.break.php ja http://fi.php.net/manual/en/control-structures.continue.php käytön eikä itse yritä tehdä samaa ehto lauseilla niin koodi pysyy luettavampana ja hitusen nopeempanakin.

Nippelitietona vielä semmoista, että forilla taulukon läpikäynti on hitusen nopeempaa ja kuluttaa vähemmän muistia kuin foreachilla, mutta ero on suuremmissakin taulukoissa on vain mikrosekuntteja, joten yleensä se on turhaa optimointia, mutta kuitenkin joskus tarpeen. Kannattaa vilkasta vaik http://www.phpbench.com/

Äänestä

Kiitos vielä noista! Tutustun ehkä joskus tarpemmin, kun ehtii ja jakselee.

Äänestä

Kommentoi aloitusta


PdfHfdgPfd kirjoitti:

Tarkotus ois järjestää taulukon kohdat suuruusjärjestykseen siten, että niiden otsikot/nimet tulis myös mukaan samassa järjestyksessä, eli ei järjestetä pelkkiä lukuja.

Olen tekemässä testiä, jonka päätteeksi käyttäjä näkee taulukon, jossa eri tulokset on listattu suuruusjärjestykseen, esimerkiksi näin:

C 100 %
A 49 %
B 10 %

PHP:ssä näittäis toistaseks suurin piirtein tältä:

$luvut = array("A" => 49, "B" => 10, "C" => 100); // noi luvut ei tietenkään lue koodissa suoraan, mutta oikasin vähän
sort($luvut);
for($i=0; $i < count($luvut); $i )
{
echo "TÄHÄN AINA A, B tai C" . $luvut[$i] . " %";
}

Eli tossa menee luvut järjestyksessä, mutta miten noi nimet eli A, B ja C saa sen kyseisen luvun yhteyteen samalle riville? Tää on varmaan ihan yksinkertaista, mutta en tajua. Jos joku auttaa, niin kiitos.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu