Gacha Posted April 7, 2004 Report Share Posted April 7, 2004 Nu mocos mocos, bet nekaa :( <?php function add($id, $data, $ip, $idx){ $all = explode('::', $data); $z = count($all)-1; $i=0; while($z>$i){ list($j[$i],$sk[$i])= split('[/]', $all[$i]); if($j[$i] == $idx){$sk[$i]+1;} //KOMENTAARS $i++; } echo $all[1]; } $data = 'Forši/3/::Stūlbi/7/::Normāli/15/::'; $ip = '456,123,154'; $idx = 'Stūlbi'; add(1, $data, $ip, $idx); ?> Tai rinai kur ir KOMENTARS vajadzētu tam $sk pieskaitīt 1 klāt ($sk=7), bet tas nenotiek. :( Iznakumam vajadzētu būt Stūlbi/8/ bet sanāk Stūlbi/7/ Link to comment Share on other sites More sharing options...
Aleksejs Posted April 7, 2004 Report Share Posted April 7, 2004 Gacha: Esi jau liels. Izlasi shito un visu sapratiisi: :D http://lv.php.net/variables.scope Link to comment Share on other sites More sharing options...
Gacha Posted April 7, 2004 Author Report Share Posted April 7, 2004 Tur tik daudz, ka nez no kura gala sākt :D Nu tur ir par tiem globāliem, bet man to nevajag un tad tur ir vēl daudzas citas lietas. Tas viss cik noprotu ir par mainīgo lietošanu. Vismaz, ja vari, tad pasaki vismaz kuru sadaļu man skatīties, jo tai lapā viss man ir jauns. Link to comment Share on other sites More sharing options...
Robis Posted April 7, 2004 Report Share Posted April 7, 2004 hmm... Cik redzams tur tai funkcijaa ir kaut kaads masiivs, kas iisti taa kaa nav zinaams $j[$i] - nez no kurienes vinjsh tur radies + kaapeec domaa, ka shitaa $sk[$i]+1; var palielinaat $sk[$i] mainiigo? Vai tas bija jaadara shaadi: $sk[$i]++; ? Jaa, un vai tad nezinaaji veel, ka funkcijas iekshienee mainiigie nedublee taadus pashus nosaukumus kaa aarpus funkcijas, iznjemot, ja tie tiek nodefineeti kaa global vai ir superglobaalie? :P Link to comment Share on other sites More sharing options...
Gacha Posted April 7, 2004 Author Report Share Posted April 7, 2004 Nu domaju, ka tur kaut kāds sakars varētu būt ar to static, bet man viņš neiet. <?php function Test() { static $a = 0; echo $a; $a++; } test(); ?> Te būtu jasanāk 1 bet man rāda nulli. Link to comment Share on other sites More sharing options...
Gacha Posted April 7, 2004 Author Report Share Posted April 7, 2004 Tas ir $j[$i] ir zināms, tas ir kāds no jautājumiem, kas ir tai masīvā. Un tas +1 vai ++ nav svarīgi pagaidām, to es testeju vai tā strādā un aizmirsu atlikt pareizi atpakaļ. Un no ārpuses man tur neko nevajag, jo jau funkcijai viss attiecīgais ir padots. Vienkārši ar to ++ viņš pieskaita pareizajam, bet nepatur to - viņš to atkal noskaita nost. Link to comment Share on other sites More sharing options...
Aleksejs Posted April 8, 2004 Report Share Posted April 8, 2004 (edited) Variable scope. Kad tu padod masīvu (un citus mainīgos) $data funkcijai, funkcija priekš sevīm uztaisa šī masīva kopiju, veic ar šo kopiju visas darbības, BET ārpus funkcijas, neviens no padotajiem mainīgajiem nemainās. Edited April 8, 2004 by Aleksejs Link to comment Share on other sites More sharing options...
Gacha Posted April 8, 2004 Author Report Share Posted April 8, 2004 Nu sapratu apm. bet kā to reāli paveikt ? Un kapēc nevar prosta pieskaitīt? Un es takš teicu ka man tas static neiet. Vai kādu piemēru neviens nezina? Link to comment Share on other sites More sharing options...
bubu Posted April 8, 2004 Report Share Posted April 8, 2004 manuaalii viss taksh ir: http://lv.php.net/manual/en/functions.arguments.php Example 12-5 Link to comment Share on other sites More sharing options...
Gacha Posted April 8, 2004 Author Report Share Posted April 8, 2004 Nu cik sapratu no tā manuāla, tad ja gri iekš funkcijas mainīt kādu varibli, tad vajag pielikt to & augšā, bet man šķiet, ka nēsmu sapratis pareizi <_< <?php function plus(&$x){ $x .= $x++; return $x; } function add($id, &$data, $ip, $idx){ $all = explode('::', $data); $z = count($all)-1; $i=0; while($z>$i){ list($j[$i],$sk[$i])= split('[/]', $all[$i]); if($j[$i] == $idx){plus($sk[$i]);} $i++; } echo $all[1]; } $data = 'Forši/3/::Stūlbi/7/::Normāli/15/::'; $ip = '456,123,154'; $idx = 'Stūlbi'; add(1, $data, $ip, $idx); ?> Iznākums tādas pats kā bija Stūlbi/7/ bet vajag Stūlbi/8/ Cik es tur testēju, tad viņš to 1 pieskaita, bet kad tas ir no f-cijas ārā, tad tas atkal pazūd. Vai kāds gudris cilvēks man nevar izpalīdzēt? Link to comment Share on other sites More sharing options...
hu_ha Posted April 8, 2004 Report Share Posted April 8, 2004 pasaku godiigi ka neesmu iedziljinaajies probleemaa, bet nu shis koda gabals liekas bik nepareizs: function plus(&$x){ $x .= $x++; return $x; } ja tur ir domaats vienkaarshi palielinaat skaitli par 1, tad tas izskatiitos shaadi: function plus($x){ $x += ++$x; //kas te bij domaats? nesapratu.. return $x; } & noziimee, ka shii mainiigaa veertiiba tiks izmainiita arii aarpus funkcijas robezhaam: //sheit neko nevajag function A ($a) { $a=1; return $a; } bet ja vajag divas veertiibas - $a atgriezh caur return, bet &$b caur adresi (kaut kaa ta) function B($a,&$b) { $a=1; $b=$a+2; return $a; //atbriezh $a veertiibu } Link to comment Share on other sites More sharing options...
Gacha Posted April 8, 2004 Author Report Share Posted April 8, 2004 Nu doma ir tāda, ka ir masīvs, tas tur $data kur ir jautajums/cipars/:: un tad es to ar explode sadalu un pēc tam ar list vēlvienreiz, līdz beidzot meklēju masīva to elementu, kurš sakrīt ar to ko ir devis lietotājs. Vajag, lai masīva elements 7 cikla rezultātā tiktu palielināts par 1 un kļūtu par 8, bet tas nenotiek. Ja pielieku to & tam $data, kurš itkā skaitās tas masīvs, kurš tiks izmainīts no ārpuses, tad nekas nenotiek. Jo masīvs tiek sadalīts vēl divos masīvos, kuriem to & nevar pielikt. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Taisu balsošanas skriptu. Lietotājs ar 'Radio' pogu nosūtu man atbildi 'Stūlbi' nu un tad tagad man vajag atrast masīvā atbildi 'Stūlbi' un pielikt klāt vienu balsi. Link to comment Share on other sites More sharing options...
Aleksejs Posted April 8, 2004 Report Share Posted April 8, 2004 Mīļais cilvēk! Parādi kaut vienu rindiņu, kur tu vispār izmaini kaut ko tam $data tajā savā funkcijā! Personīgi es redzu, ka tu sadali virknīti $data pa dažādiem mainīgajiem, tad veic (kādas nu tev vajadzīgas) darbības ar tiem mainīgajiem, un beigās ceri, ka maģiskā kārtā būs izmainījies arī $data! Man šķiet, ka, ja jau tu iz explodēji to $data pa mainīgajiem, tad samērā loģiski būtu pēc manipulācijām ar datiem (tādām kā speciālas funkcijas izsaukšana, lai pieskaitītu viens skaitlim; vai labo garu piesaukšana in general...) ieimplodēt to visu arī atpakaļ. Ar ko tu visu dienu nodarbojies!!! ;) Link to comment Share on other sites More sharing options...
Gacha Posted April 8, 2004 Author Report Share Posted April 8, 2004 Saproti es vienkārši pirmo reizi ar tiem masīviem tā ņemos un tapēc neko daudz nerubiju. Nu to implode man vajadzēja atcerēties, bet domā es zinu, kur man tas būtu jaliek? Un tā arī nesapratu kur tad īsti jaliek ir tas & un kā tieši izmantot. Kaut kas neiet, ja varat izstāstīt kapēc un kur tad būtu labi. Jo nesen tik izmantoju ciklus, tad vēl nesenāk funkcijas un 3 dienas atpakaļ masīvus. Es vienkārši tik strauji nevaru sagremot, bet savs balsošanas scripts man gribās un tāds, kur pats katru rindiņu saprotu :unsure: Nu nez function plus($x){ $x += ++$x; return $x; } function add($id, $data, $idx){ $all = explode('::', $data); $z = count($all)-1; $i=0; while($z>$i){ list($j[$i],$sk[$i])= $huy = split('[/]', $all[$i]); if($j[$i] == $idx){plus($sk[$i]);} $i++; } $data = implode('::',$all); echo $data; } $data = 'Forši/3/::Stūlbi/7/::Normāli/15/::'; $idx = 'Stūlbi'; add(1, $data, $idx); iznakums tas pats 7 Link to comment Share on other sites More sharing options...
Aleksejs Posted April 8, 2004 Report Share Posted April 8, 2004 Nu labi, laabi ;) Es rakstītu visu šādi (patiesībā visu rakstītu pilnīgi savādāk, bet lai nu paliek :P): function plus($x){ $x++; //manuprāt tas arī viss... // Neko atpakaļ dot nevajag return $x; } function add($id, $data, $idx){ $all = explode('::', $data); $z = count($all)-1; $i=0; $data =''; while($z>$i){//te bija vienkāršāk "for" ciklu izmantot list($j[$i],$sk[$i])= $huy = split('[/]', $all[$i]); if($j[$i] == $idx){plus(&$sk[$i]);} //arī to $sk[$i] vajag padot by reference $data .= $j[$i] . '/' . $sk[$i] . '/::'; $i++; } //$data = implode('::',$all); šitas nestrādā, jo tu masīvu $all neizmaini //echo $data; Šito ja nu8 vienīgi debugošanai var atstāt } $data = 'Forši/3/::Stūlbi/7/::Normāli/15/::'; $idx = 'Stūlbi'; add(1, $data, $idx);//Ko dod tas viennieks??? Es pieņemu, ka visi explode un implode darbojas pareizi. Tajā nemēģināju iebraukt. Starp citu kas attiecas uz programmēšanu kā tādu... Papēti šo te: http://www.liis.lv/nps/ Link to comment Share on other sites More sharing options...
Recommended Posts