Avatar billede sesam Nybegynder
10. marts 2004 - 10:50 Der er 18 kommentarer og
2 løsninger

Endnu et php regnestykke

Hvis jeg har tallet 57 og det skal fordeles i 20 kasser såleds
at der lægges et tal i
skuffe 1
skuffe 2
skuffe 3
...
skuffe 20

så er der 37 tilbage også skal processen startes forfra altså
skuffe 1
skuffe 2
skuffe 3
...
skuffe 20

Osv... Indtil jeg ikke har flere værdier at ligge i skufferne.

Kan det lade sig gøre? hvis ja, hvordan?
Avatar billede tefcke Nybegynder
10. marts 2004 - 11:37 #1
<pre>
<?php
$tal = 57;
$skuffer = array(1 => array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array(),
                      array());
$startskuffe = 1;
while ( $tal > 0 ) {
    if ( $startskuffe > count($skuffer) ) $startskuffe = 1;
    $skuffer[$startskuffe++][] = $tal--;
}

var_dump($skuffer);

?>
</pre>
Avatar billede sesam Nybegynder
10. marts 2004 - 11:44 #2
Hvad hvis jeg vil ha' værdierne overfør til input fields?
Avatar billede tefcke Nybegynder
10. marts 2004 - 12:36 #3
Hvordan ser formen med de input fields ud?
Avatar billede sesam Nybegynder
10. marts 2004 - 12:42 #4
Hvad tænker du på:
<form action="...." .........../>
<input type="hidden" name="skuffe1" />
<input type="hidden" name="skuffe2" />
................................
</form>
Avatar billede tefcke Nybegynder
10. marts 2004 - 13:06 #5
ja, men nu står der jo ikke kun ét tal i hver skuffe, hvordan havde du tænkt dig at flere tal skulle være i ét input felt?

Skal de have en delimiter?
<inpu type="hidden" name="skuffeX" value="57|37|17" />
eller bare et mellemrum:
<inpu type="hidden" name="skuffeX" value="57 37 17" />
eller et underscore(_):
<inpu type="hidden" name="skuffeX" value="57_37_17" />

Altså, hvordan vil du have repræsenteret et array som en streng?
Avatar billede sesam Nybegynder
10. marts 2004 - 13:13 #6
Der skal kun være den højeste værdi i hver enkelt skuffe altså hvis skuffe 1 indeholder værdier fra 1 til 4 skal 4 komme frem osv...
Avatar billede tefcke Nybegynder
10. marts 2004 - 13:23 #7
Sammen med den anden algoritme skulle denne gøre hvad du ber om:

<form action="..." method="post">
<?php
for ($i = 1; $i <= count($skuffer); $i++) {
    sort($skuffer[$i], SORT_NUMERIC);
?>
    <input type="hidden" name="skuffe<?php echo $i;?>" value="<?php echo array_pop($skuffer[$i]);?>" />
<?php
}
?>
</form>

##############################
Output:
<form action="..." method="post">
    <input type="hidden" name="skuffe1" value="57" />
    <input type="hidden" name="skuffe2" value="56" />
    <input type="hidden" name="skuffe3" value="55" />
    <input type="hidden" name="skuffe4" value="54" />
    <input type="hidden" name="skuffe5" value="53" />
    <input type="hidden" name="skuffe6" value="52" />
    <input type="hidden" name="skuffe7" value="51" />
    <input type="hidden" name="skuffe8" value="50" />
    <input type="hidden" name="skuffe9" value="49" />
    <input type="hidden" name="skuffe10" value="48" />
    <input type="hidden" name="skuffe11" value="47" />
    <input type="hidden" name="skuffe12" value="46" />
    <input type="hidden" name="skuffe13" value="45" />
    <input type="hidden" name="skuffe14" value="44" />
    <input type="hidden" name="skuffe15" value="43" />
    <input type="hidden" name="skuffe16" value="42" />
    <input type="hidden" name="skuffe17" value="41" />
    <input type="hidden" name="skuffe18" value="40" />
    <input type="hidden" name="skuffe19" value="39" />
    <input type="hidden" name="skuffe20" value="38" />
</form>
Avatar billede sesam Nybegynder
10. marts 2004 - 13:32 #8
[18]=>
  array(2)----------------------------->Nej det skulle være denne værdi {
    [0]=>
    int(40)
    [1]=>
    int(20)
  }
  [19]=>
  array(2)-------------------------------> Nej det skulle være denne værdi {
    [0]=>
    int(39)
    [1]=>
    int(19)
  }
  [20]=>
  array(2) {
    [0]=>
    int(38)
    [1]=>
    int(18)
  }
}
Avatar billede tefcke Nybegynder
10. marts 2004 - 13:38 #9
<form action="..." method="post">
<?php
for ($i = 1; $i <= count($skuffer); $i++) {
?>
    <input type="hidden" name="skuffe<?php echo $i;?>" value="<?php echo count($skuffer[$i]);?>" />
<?php
}
?>
</form>
Avatar billede tefcke Nybegynder
10. marts 2004 - 13:39 #10
Så er det ikke den elementet med højeste værdi af hver skuffe, men antal elementer i hver skuffe!
Avatar billede sesam Nybegynder
10. marts 2004 - 13:40 #11
Ja undskyld efter at ha' læst mit spørgsmål igennem igen kan jeg godt se at jeg spurgte forkert...
Avatar billede tefcke Nybegynder
10. marts 2004 - 13:43 #12
Men det er sådan det skal være? eller?
Avatar billede sesam Nybegynder
10. marts 2004 - 13:51 #13
Ja næsten. Problemet er bare at jeg skal ha' fordelt værdierne.
i mine input felter der skrives tifældigt ud.
<input type="hidden" id="5" />
<input type="hidden" id="7" />
<input type="hidden" id="1" />
<input type="hidden" id="18" />
<input type="hidden" id="12" />
<input type="hidden" id="2" />
....
....
....
Første værdi altså tallet 3 skal i skuffe 1 som jo er mit 3 felt
Anden værdi igen tallet 3 skal i skuffe 2 som  er mit 6 felt

Og rækkefølgen kan ændre sig på den måde felterne skrives ud...

Kan det lade sig gøre?
Avatar billede tefcke Nybegynder
10. marts 2004 - 13:59 #14
Jeg forstår ikke helt hvad det er du vil!
For mig og se har det ikke så meget at gøre med det oprindelige problem med at fordele et tal i X antal skuffer!
Avatar billede sesam Nybegynder
10. marts 2004 - 14:04 #15
Hvis du forestiller dig samme problemstillign som den første at der skal fordeles nogle værdier i nogle skuffer. De skuffer er bare rodet rundt men har et ID nummer.
Fx. skuffe et har ID nummer 1 men er på skuffe 3 plads dvs. sige:
<input type="hidden" id="5" />
<input type="hidden" id="7" />
<input type="hidden" id="1" />
<input type="hidden" id="18" />
<input type="hidden" id="12" />
<input type="hidden" id="2" />
I den skuffe skal den første værdi smides i osv.

Håber du forstår nu? :0)
Avatar billede sesam Nybegynder
10. marts 2004 - 14:58 #16
Er det helt af h...... til?
Avatar billede tefcke Nybegynder
10. marts 2004 - 15:01 #17
Ja, for hvad jeg ved af, bliver id'er ikke smidt vidre med en form!
Avatar billede sesam Nybegynder
10. marts 2004 - 15:59 #18
Nej, men id'en skal kun bruges til at identificere ovenstående.
Der kunne også ha' stået <p id="2">...</p>

Er det bedre ???
Avatar billede tefcke Nybegynder
10. marts 2004 - 18:27 #19
stadig, så er der ingen reference (et navn) til input felterne, så man kan ikke umidelbart identificere dem!

Jeg kunne godt tænke mig at se hvad du skal bruge det til, i et større sammenhæng!
Avatar billede sesam Nybegynder
16. april 2004 - 09:17 #20
Jeg lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester