Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Bodymaster
HV vaatleja
liitunud: 03.04.2013
|
03.04.2013 12:06:08
Natukene abi php's |
|
|
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 |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
03.04.2013 12:11:36
|
|
|
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 |
|
 |
Bodymaster
HV vaatleja
liitunud: 03.04.2013
|
03.04.2013 12:19:22
|
|
|
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 |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
03.04.2013 12:26:48
|
|
|
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 |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
03.04.2013 12:29:48
|
|
|
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 |
|
 |
infidel
HV kasutaja

liitunud: 31.01.2004
|
03.04.2013 12:39:58
|
|
|
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:
|
function add($info) { return $cut; } $info = 'esimene-teine-kolmas-neljas';
|
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 |
|
 |
Bodymaster
HV vaatleja
liitunud: 03.04.2013
|
03.04.2013 13:06:00
|
|
|
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:
|
$tekst = 'esimene-teine-kolmas-neljas'; $objekt = new objekt(); 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 |
|
 |
Celos
Kreisi kasutaja

liitunud: 23.08.2005
|
03.04.2013 13:19:42
|
|
|
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 
$tekst = 'esimene-teine-kolmas-neljas';
$objekt = new objekt();
$objekt->add($text);
echo $objekt->Funktisoon(3);
|
või
$tekst = 'esimene-teine-kolmas-neljas';
$objekt = new objekt($text);
echo $objekt->Funktisoon(3);
|
|
|
Kommentaarid: 16 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
15 |
|
tagasi üles |
|
 |
infidel
HV kasutaja

liitunud: 31.01.2004
|
03.04.2013 14:16:37
|
|
|
Niimoodi töötaks kood objekte kasutamata:
php:
|
function funktsioon($tekst, $jarjenumber) {//loome funktsiooni, mis võtab sisendina lause ja otsitava sõna järjekorranumbri $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. $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. return "{$cut[$jarjenumber]} ({$loend})"; //paneme kokku väljastatava andmepaketi, mis koosneb leitud sõnast ja selle täishäälikute arvust } $tekst = 'esimene-teine-kolmas-neljas'; //tekst saab väärtuse $jarjenumber = 2; //nii ka järjekorranumber 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 |
|
 |
Bodymaster
HV vaatleja
liitunud: 03.04.2013
|
03.04.2013 14:41:26
|
|
|
php:
|
$info = 'esimene-teine-kolmas-neljas'; $objekt = new objekt(); $objekt->add($info); class objekt { function add($info) { return $cut; } function funktsioon($index) { $cut = preg_split("/-/", 'esimene-teine-kolmas-neljas'); return $cut[$index]; } } 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 |
|
 |
infidel
HV kasutaja

liitunud: 31.01.2004
|
03.04.2013 16:34:35
|
|
|
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 |
|
 |
Bodymaster
HV vaatleja
liitunud: 03.04.2013
|
03.04.2013 18:00:32
|
|
|
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 |
|
 |
Celos
Kreisi kasutaja

liitunud: 23.08.2005
|
04.04.2013 16:27:03
|
|
|
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 |
|
 |
|