Pereiti prie turinio

Rekomenduojami pranešimai

Pvz turiu tris kintamuosius

$a = 25 ; $b = 2 ; $c = 10;

ir reikia atimti tarkim 30, ir reikia padaryti, kad kai vieno lieka nulis, tada imtų iš kito atsitiktinumo būdu . Kas padės?

 

if(KAŽKAS){
DARYK KAŽKĄ
}
elseif(KAŽKAS KITO){
DARYK KAŽKĄ KITO
}
elseif(KAŽKAS KITO){
DARYK KAŽKĄ KITO
}
else{
DARYK, KO DAR NEBUVO
}

 

arba su switch ir case.

Dėl atsitiktinumo, tai gali idėti į mąsyvą ir su random pasiimti.

 

Nelabai supratau - "kai lieka 0". Nebus 0 neivienu atveju, jei iš šių kintamųjų atimsi 30.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

if(KAŽKAS){
DARYK KAŽKĄ
}
elseif(KAŽKAS KITO){
DARYK KAŽKĄ KITO
}
elseif(KAŽKAS KITO){
DARYK KAŽKĄ KITO
}
else{
DARYK, KO DAR NEBUVO
}

 

arba su switch ir case.

Dėl atsitiktinumo, tai gali idėti į mąsyvą ir su random pasiimti.

 

Nelabai supratau - "kai lieka 0". Nebus 0 neivienu atveju, jei iš šių kintamųjų atimsi 30.

 

Su if else žaisti nelabai norisi... nes mano scripti ir daug taip if else yra... tai paskui pasimesiu visai :D

 

O jei pvz naudočiau

foreach arba while ?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Realiai galima apskaičiuoti matematiškai,pagal c++ pvz.

Rezultatas=$a-30

2Rezultatas=Rezultatas+$b

$c+2Rezultatas=7

Tikiuosi supratai ką turėjau omeny,Šita formulė veikia ant c++,galbūt veiks ir ant php.

Tik reik prie kintamuju pridėt Rezultatas

Redagavo arvydas999
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Su if else žaisti nelabai norisi... nes mano scripti ir daug taip if else yra... tai paskui pasimesiu visai :D

 

O jei pvz naudočiau

foreach arba while ?

Ciklai čia ne prie ko. Tam, kad nepasimestum rašyk komentarus sau ir kitiems, kad ir kiti tavo kode nepasimestų.

Jei gali būti daug visokių variacijų, tai vietoj IF naudok SWITCH. Tai tikriausiai paprasčiausias kelias. Nereikia ieškoti kažko sudėtingo ten, kur to nereikia.

Redagavo Steeler
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Is tavo klausimo ne visiskai supratau ko tau reikia, bet sitai budas kaip galima butu tai padaryti:

<?php
$arr = array('a' => 25,'b' => 2,'c' => 10);

while (count(array_filter($arr)) > 0) {
atimtis($arr, 30);
// spausdiname array, kad butu matomas rezultatas po atemimo
var_dump($arr);
}

function atimtis(&$arr, $minus)
{
$key = array_rand(array_filter($arr));
echo '</br>Atimama is: ' . $key . '</br>';
$arr[$key] = max((int)($arr[$key] - $minus), 0);
}

?>

Grazina toki rezultata:

Atimama is: a
array(3) { ["a"]=> int(0) ["b"]=> int(2) ["c"]=> int(10) } 
Atimama is: b
array(3) { ["a"]=> int(0) ["b"]=> int(0) ["c"]=> int(10) } 
Atimama is: c
array(3) { ["a"]=> int(0) ["b"]=> int(0) ["c"]=> int(0) } 

 

Kaip matai, pirma kart is 'a', antra is 'b' ir t.t. iki tol kol nera is ko atimti.

Redagavo Ispirit
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Antras budas, cia atimama is pormojo, tada jeigu yra dar ka atimti, bandoma is antro ir iki tol kol nebera ka atimti arba is ko atimti:

<?php
$arr2 = array('a' => 25,'b' => 2,'c' => 10);
$atimti = 30;

while ($atimti > 0 AND count(array_filter($arr2)) > 0) {
$key = array_rand(array_filter($arr2));
echo "<br/>Atimam $atimti is [$key]={$arr2[$key]}";
$atimti -= $arr2[$key];
$arr2[$key] = ($atimti >= 0) ? 0 : abs($atimti);
}
echo(($atimti >=0) ? "<br/>Liko $atimti" : "<br/>Nebeliko ka atimti");
echo '<br>Arr:'; var_dump($arr2);
echo '<br>Atimti:'; var_dump($atimti);
?>

Galimas rezultatas:

Atimam 30 is [c]=10
Atimam 20 is [b]=2
Atimam 18 is [a]=25
Nebeliko ka atimti

Arr:array(3) { ["a"]=> int(7) ["b"]=> int(0) ["c"]=> int(0) } 
Atimti:int(-7)

Redagavo Ispirit
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Antras budas, cia atimama is pormojo, tada jeigu yra dar ka atimti, bandoma is antro ir iki tol kol nebera ka atimti arba is ko atimti:

<?php
$arr2 = array('a' => 25,'b' => 2,'c' => 10);
$atimti = 30;

while ($atimti > 0 AND count(array_filter($arr2)) > 0) {
$key = array_rand(array_filter($arr2));
echo "<br/>Atimam $atimti is [$key]={$arr2[$key]}";
$atimti -= $arr2[$key];
$arr2[$key] = ($atimti >= 0) ? 0 : abs($atimti);
}
echo(($atimti >=0) ? "<br/>Liko $atimti" : "<br/>Nebeliko ka atimti");
echo '<br>Arr:'; var_dump($arr2);
echo '<br>Atimti:'; var_dump($atimti);
?>

Galimas rezultatas:

Atimam 30 is [c]=10
Atimam 20 is [b]=2
Atimam 18 is [a]=25
Nebeliko ka atimti

Arr:array(3) { ["a"]=> int(7) ["b"]=> int(0) ["c"]=> int(0) } 
Atimti:int(-7)

Gerai dekui tau ;) kaip tik sitas variantas priimtinesnis... nesupratai.. bet gavau tai ko reikia :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...