Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP - funktsioon ei väljasta tulemust märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
tooming
HV vaatleja
tooming

liitunud: 19.03.2007




sõnum 25.01.2008 23:33:26 PHP - funktsioon ei väljasta tulemust vasta tsitaadiga

Tegelen siin .csv faili töötlemisega ning väliselt lihtne asi tekitab raskusi. (Eks kellaaeg pole ka enam väga soodne)
Nimi tuleb sellise masiivina, kus perekonnanimi on alati viimane ning väljastada on vaja eesnimi.
$nimi = array('martin', 'karl', 'ants', 'tooming');

Esinimede arv võib varieeruda. Kindlasti on lihtsam viis selleks, kuid mina mõtlesin välja praegu sellise asja:
function eesnimi($array, $nimi=''){
   $nimi .= ' '.array_shift($array);
   echo '$nimi = '.$nimi.'<br>';
   if(count($array)>1){
      echo 'eenimesid on veel<br>';
      eesnimi($array, $nimi);
   }else {
      echo 'läheb väljastamiseks: <br>';
      return $nimi;
   }
   
}
$nimi = array('martin', 'jüri', 'jaan', 'perekonnanimi');
$eesnimi = eesnimi($nimi);
echo $eesnimi;

Mis väljastab sellise asja:
$nimi = martin
eenimesid on veel
$nimi = martin jüri
eenimesid on veel
$nimi = martin jüri jaan
läheb väljastamiseks:

Ja kogu probleem on selles, et tegelikult ei väljasta funktsioon neid esinimesid, kuigi vahetult enne on funktsioonis $nimi väärtus martin jüri jaan. Mõtteid?
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 25.01.2008 23:51:33 vasta tsitaadiga

Aga sa tead ju mitu elementi on massiivis. Kuna on alati üks perekonnanimi ja suvalt eesnimesid loobid kõik esimesed array liikmed välja ja viimase jätad väljastamatta. Oletame, et sull on 4 osaline massiiv vaja siis välja ajada kolm esimest.
<?php
$nimi = array('martin', 'karl', 'ants', 'tooming');
$ii=count($nimi);
for ($i=0;$i<$ii-1;$i++){
echo $nimi[$i].'<br>';}
?>

ja kogu lugu.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Celion
HV kasutaja
Celion

liitunud: 31.10.2002




sõnum 26.01.2008 00:04:31 vasta tsitaadiga

andrusny pakutud lahendus on küll parem, aga kui originaalset koodi parandada (oma vigadest õppimiseks), siis on if osast lihtsalt return puudu:
   if(count($array)>1){
      echo 'eenimesid on veel<br>';
      return eesnimi($array, $nimi);
   }else { ...

_________________
Ostan Roger Zelazny "Amberi kroonikad" (soovitatavalt eesti keeles).
Kommentaarid: 46 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 45
tagasi üles
vaata kasutaja infot saada privaatsõnum
sharkey
HV vaatleja

liitunud: 26.11.2005




sõnum 26.01.2008 06:01:03 vasta tsitaadiga

Et paremini näha oleks, mis toimub ja miks ei väljastata oodatud tulemust, võiksid lisada funktsiooni lõppu muutuja $nimi väljaprintimise.
...
   else {
      echo 'läheb väljastamiseks: <br>';
      return $nimi;
   }
}

Ja nagu juba eespool mainitud, oleks iteratiivne lahendus palju parem.
Spoiler Spoiler Spoiler
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 26.01.2008 12:14:35 vasta tsitaadiga

ja natuke teoreetilist tausta, miks su esimene katse ebaõnnestus icon_smile.gif
_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
tooming
HV vaatleja
tooming

liitunud: 19.03.2007




sõnum 26.01.2008 20:48:31 vasta tsitaadiga

Tänud kõigile! sharkey lahendus kõige parem siiski. Piisab lihtsalt viimase elemendi kustutamisest.
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP - funktsioon ei väljasta tulemust
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.