Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Natukene abi php's 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 teata moderaatorile
otsing:  
Bodymaster
HV vaatleja

liitunud: 03.04.2013




sõnum 03.04.2013 12:06:08 Natukene abi php's vasta tsitaadiga

Oleks väikese ülesandega abi vaja millega ise jänni jäin.

Ülesanne järgmine:

Loo klass, mis tükeldab teksti ning väljastab
sõna funktsiooni kasutades ning koos sõnaga väljastab
täishäälikute arvu:

Näidis:

$tekst = 'esimene-teine-kolmas-neljas';

$objekt = new objekt();
echo $objekt->Funktisoon(3);

//väljund on
//neljas (2)

Igasugune abi oleks oodatud.

Bodymaster
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 03.04.2013 12:11:36 vasta tsitaadiga

Kaugele Sa ise oled sellega jõudnud? Kooliülesannet keegi Sinu eest ära tegema siin foorumis ei hakka, seega käi oma senine looming ja konkreetsed küsimused letti.
_________________
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
Bodymaster
HV vaatleja

liitunud: 03.04.2013




sõnum 03.04.2013 12:19:22 vasta tsitaadiga

class objekt
{
function add($info)
{
$cut = preg_split("/-/", $info);
}
}
$info = 'esimene-teine-kolmas-neljas';


$objekt = new objekt();
$objekt->add($info);

echo $objekt->funktsioon(3);

Ma olen siin aga sellise käiguga ma panen puuse. Ma täishäälikuid ei ole hetkel hakanud tegema kuna saan enne seda errori mida ei suuda lahendada.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 03.04.2013 12:26:48 vasta tsitaadiga

Kuna mu kristallkuul on natuke roostes, siis äkki jagad ka seda veateate sisu. Ei viitsi hetkel ise katsetamiseks php'd käima ajada.

Peale vaadates tekib muidugi küsimus, et miks sa seal lõpus "echo $objekt->funktsioon(3);" teed? Sellise nimega funktsiooni sul klassis hetkel ju ei ole, et seda välja kutsuda.

PS. Kasuta koodilõikude postitamiseks [code] või [syntax] tage.

_________________
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
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 03.04.2013 12:29:48 vasta tsitaadiga

Kui regexp-ga väga sina peal pole ja nende kasutamine pole nõutud, siis preg_split asemel soovitaks kasutada explode funktsiooni.
Aga antud juhul on error tõenäoliselt sellest, et funktsioon on sul klassis objekt ju defineerimata.
Kommentaarid: 77 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
infidel
HV kasutaja
infidel

liitunud: 31.01.2004




sõnum 03.04.2013 12:39:58 vasta tsitaadiga

Veateate saamisel tasub selle sisusse süveneda. Antud juhul on viga ilmselt selline:
PHP Fatal error: Call to undefined method objekt::funktsioon() on line 15

Kiire pilk koodi näitab, et sellel real puudub hetkel ka mõte.
Tarbetu kraami maha rookimisel saab sellise tulemuse:

php:
  1. function add($info)
  2. {
  3. $cut = preg_split("/-/", $info);
  4. return $cut;
  5. }
  6. $info = 'esimene-teine-kolmas-neljas';
  7. print_r (add($info));


Lõpus on print_r ainult selleks, et näha, mida funktsioon välja annab. Oluline muutus on aga funktsiooni lisatud return, sest nii saab ülejäänud kood ka teada, mida funktsioon välja mõtles.
Kommentaarid: 36 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 35
tagasi üles
vaata kasutaja infot saada privaatsõnum
Bodymaster
HV vaatleja

liitunud: 03.04.2013




sõnum 03.04.2013 13:06:00 vasta tsitaadiga

Infidelil on õigus errori kohta.
Sellel koodil on ka loogilisus taga. Tänud
Aga nüüd millega ma ka enne jänni jäin on
php:
  1. $tekst = 'esimene-teine-kolmas-neljas';
  2.  
  3. $objekt = new objekt();
  4. echo $objekt->Funktisoon(3);


Kuidas saaks sealt välja tuua nt. kriipsu järgi neljas (tähed ei ole olulised hetkel).
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Celos
Kreisi kasutaja
Celos

liitunud: 23.08.2005




sõnum 03.04.2013 13:19:42 vasta tsitaadiga

Tundub, et peaksid veel veidi õpiku kallale minema. preg_split tagastab mingi asja. Mis see on ja kuhu sa selle salvestad (hint: praegu mitte kuhugi)?

e: lisaks, su toodud näide natuke lonkab. Objekt peaks selle $tekst muutuja ka kuidagi kätte saama (globaalsed muutujad on saatanast):
Spoiler Spoiler Spoiler
Kommentaarid: 16 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
infidel
HV kasutaja
infidel

liitunud: 31.01.2004




sõnum 03.04.2013 14:16:37 vasta tsitaadiga

Niimoodi töötaks kood objekte kasutamata:
php:
  1. function funktsioon($tekst, $jarjenumber) {//loome funktsiooni, mis võtab sisendina lause ja otsitava sõna järjekorranumbri
  2. $cut = preg_split("/-/", $tekst); //lõikame lause tükkideks, tulemuseks on array() tüüpi muutuja. Selle alamelemente saab kätte [] abil, mille vahele läheb järjekorranumber.
  3. $loend = strlen($cut[$jarjenumber]) - strlen(str_replace(str_split('aeiouõaöü'), '', $cut[$jarjenumber])); //loeme üle täishäälikud, nagu nõutud. Selleks lahutame sõna kogupikkusest sõna pikkuse ilma täishäälikuteta.
  4. return "{$cut[$jarjenumber]} ({$loend})"; //paneme kokku väljastatava andmepaketi, mis koosneb leitud sõnast ja selle täishäälikute arvust
  5. }
  6. $tekst = 'esimene-teine-kolmas-neljas'; //tekst saab väärtuse
  7. $jarjenumber = 2; //nii ka järjekorranumber
  8. echo funktsioon($tekst, $jarjenumber); //anname teksti ja numbri funktsioonile hambusse

Et aga ülesandes oli nimelt klassi nõutud, siis tuleb eelpool olevat modifitseerida. Kuidas aga üldine funktsionaalsus käib, see peaks lähemal uurimisel arusaadav olema.
Kommentaarid: 36 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 35
tagasi üles
vaata kasutaja infot saada privaatsõnum
Bodymaster
HV vaatleja

liitunud: 03.04.2013




sõnum 03.04.2013 14:41:26 vasta tsitaadiga

php:
  1. $info = 'esimene-teine-kolmas-neljas';
  2. $objekt = new objekt();
  3. $objekt->add($info);
  4.  
  5. class objekt
  6. {
  7.         function add($info)
  8.         {
  9.         $cut = preg_split("/-/", $info);
  10.         return $cut;
  11.         }
  12.         function funktsioon($index)
  13.         {
  14.         $cut = preg_split("/-/", 'esimene-teine-kolmas-neljas');
  15.         return $cut[$index];
  16.         }
  17. }
  18.  
  19. echo $objekt->funktsioon(3);


Väike update, ainuke asi mis mul on puudu on klassi sisene muutuja. see on nüüd modifitseeritud Ül. parameetrites.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
infidel
HV kasutaja
infidel

liitunud: 31.01.2004




sõnum 03.04.2013 16:34:35 vasta tsitaadiga

Klassi sisese muutuja saad määrata käsuga var.
Klassisisesed viited (näiteks funktsioonide sees) käivad kujul $this->muutuja.
Edasi ei tohiks enam väga keeruline olla.
Kommentaarid: 36 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 35
tagasi üles
vaata kasutaja infot saada privaatsõnum
Bodymaster
HV vaatleja

liitunud: 03.04.2013




sõnum 03.04.2013 18:00:32 vasta tsitaadiga

Ma jõudsin vahepeal koju. Enam ei tohiks jah väga raske olla ja ma arvan, et lõpetan omaette ära.
Suur tänu kõigile kes aitasid.

Bodymaster
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Celos
Kreisi kasutaja
Celos

liitunud: 23.08.2005




sõnum 04.04.2013 16:27:03 vasta tsitaadiga

infidel kirjutas:
Klassi sisese muutuja saad määrata käsuga var.

Eh, ära siis mingit igandit ka õpeta.
http://www.php.net/manual/en/language.oop5.visibility.php kirjutas:
Note: The PHP 4 method of declaring a variable with the var keyword is still supported for compatibility reasons (as a synonym for the public keyword). In PHP 5 before 5.1.3, its usage would generate an E_STRICT warning.
Kommentaarid: 16 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Natukene abi php's
[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.