Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Arrayn käyttäjäystävällinen tulostus

Sivun loppuun

Dekooderi [23.03.2006 17:18:35]

#

Miten pystyisi PHP:llä tekemään arraysta käyttäjäystävällisen tulosteen?

Esim:

<?php
$taulukko=array("minä1","minä2","minä3","minä4");
print_r ($taulukko);
print $taulukko;
echo $taulukko;
?>

ja tuloste on tämä print_r functiosta:

Array ( [0] => minä1 [1] => minä2 [2] => minä3 [3] => minä4 )

ja echo:sta ja print:stä tulee:

ArrayArray

Kumpikaan tulosteista ei ole oikein sellainen, jonka voisi antaa käyttäjälle, ellei halua kertoa, kuinka monimutkainen sivu oikein on, tai että sana Array on sydäntä lähellä :/

Deewiant [23.03.2006 17:23:41]

#

Voit vaikka käyttää implode()-funktiota.

Dekooderi [23.03.2006 17:28:44]

#

mhm..
Miten sitä käytetään :D
Ei ainakaan näköjään toimi samalla lailla kuin print_r

Ei mitään sittenkään, ellei löydy järkevämpää tulostustapaa kuin

$joku=array("jotain1","jotain2")
print_r (implode($joku))

tsuriga [23.03.2006 18:37:09]

#

Tässä tapauksessa pitänee turvautua omaan apuun, ellei manuskan kommenteista satu löytymään valmista ratkaisua. Elikkä käyt taulukon läpi ja lisäät muotoilut. Esimerkkinä

<?php
$str = "";
foreach ($arr as $key => $value) {
  $hr_str .= "[".$key."] => ".var_dump($value)."<br />\n";
  }
echo $str;
?>

Jos taulukko sisältää taulukoita niin kannattaa tehdä funktiosta rekursiivinen (rekursiivisuudesta on muistaakseni opas Ohjelmointiputkassa).

Deewiant [23.03.2006 18:49:24]

#

Dekooderi kirjoitti:

mhm..
Miten sitä käytetään :D
Ei ainakaan näköjään toimi samalla lailla kuin print_r

Ei mitään sittenkään, ellei löydy järkevämpää tulostustapaa kuin

$joku=array("jotain1","jotain2")
print_r (implode($joku))

echo tai tavallinen print voisi olla fiksumpi idea kuin print_r, implode kun kerran palauttaa ihan stringin eikä taulukkoa.

tsurigan esimerkki on kätevä, jos haluat printata myös taulukon keyt - eli esimerkissäsi 0, 1, 2, 3 - arvojen - minä1, minä2, minä3, minä4 - lisäksi.

Olga [23.03.2006 19:30:00]

#

Toki voit laittaa tuon print_r-funktion tulosteen pre-tagien väliin, jolloin tulostus on jo paljon selkeämpi.

kasetti [23.03.2006 20:02:11]

#

tuolla pari käyttäjäystävällistä esimerkkiä:

http://www.kasetti.info/koodivinkit.php?koodi=25

Dekooderi [23.03.2006 20:16:54]

#

Mulla tuo implode() toimi ainakin loistavasti, ja se ainakin näin alkuun ja asiaa enemmän tuntematta ( :D ) tuntuu selkeämmältä

Muuten... Tietääkö kukaan, miksei äsken väsäämäni funktio tulostu

<?php
// Datafunktio
function kaikki_functio()

{
 // Lomakkeen luontifunktio
 function loma_functio()

    {
     echo "
           <form method='post' action='oliophp.php'>
           <input type='text' maxlenght='' lenght='30' name='lomake[]'>
           <input type='submit' value='Lähetä'>
           <br>
          ";
    };

 //Lomakkeen datan vastaanottofunctio
 function vasta_functio()

    {
     $lomake=$_POST['lomake'];
     if ($lomake==null && $lomake=="")
        {
         echo "Et kirjoittanut mitään. Kirjoitappa jotain!";
        }
     else
        {
         echo "Kirjoit: $lomake";
        }
    }
}
?>

Tarkotus olis sitten tulostaa funktio näin

<?php
kaikki_functio()
?>

Mutta funktio ei vain tulostu...
Ei tuossa mitään suoraa PHP:n kieliopillista virhettä pitäisi olla, sillä kaikki muu tulostuu normaalisti (Mulla jos esim. puuttuu mistä tahansa paikasta jossa sitä tarvii ; -merkki, ei tulostu mitään muuta kuin valkoinen ikkuna)

Niko [23.03.2006 20:35:00]

#

Sinulla on vain 2 funktiota ton kaikki_function sisällä kannattaa ottaa ne pois.

Dekooderi [23.03.2006 20:39:57]

#

Kokeilin, mutta en saanu tuota loma_function dataa liitettyä vasta_functioon

str4nd [24.03.2006 22:10:18]

#

Dekooderi kirjoitti:

Mutta funktio ei vain tulostu...

Et kutsu funktioita! Sama kun olisi tärkeän sivun tiedostoarray, mutta sitä ei printattaisi.
return-funktio olisi ihan kiva sinun opetella.

Dekooderi [26.03.2006 11:10:49]

#

:)
Tulossa seuraavassa jaksossa
(To be continue..)
:)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta