Jump to content
php.lv forumi

Updeitot masivu


Gacha

Recommended Posts

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

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

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

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

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

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 by Aleksejs
Link to comment
Share on other sites

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

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

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

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

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

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

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

×
×
  • Create New...