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ä :/
Voit vaikka käyttää implode()-funktiota.
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
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).
Dekooderi kirjoitti:
mhm..
Miten sitä käytetään :D
Ei ainakaan näköjään toimi samalla lailla kuin print_rEi mitään sittenkään, ellei löydy järkevämpää tulostustapaa kuin
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.
Toki voit laittaa tuon print_r-funktion tulosteen pre-tagien väliin, jolloin tulostus on jo paljon selkeämpi.
tuolla pari käyttäjäystävällistä esimerkkiä:
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)
Sinulla on vain 2 funktiota ton kaikki_function sisällä kannattaa ottaa ne pois.
Kokeilin, mutta en saanu tuota loma_function dataa liitettyä vasta_functioon
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.
:)
Tulossa seuraavassa jaksossa
(To be continue..)
:)
Aihe on jo aika vanha, joten et voi enää vastata siihen.