Meerdere waarden optellen binnen loop

Pagina: 1
Acties:

Onderwerpen


  • meneer william
  • Registratie: Maart 2011
  • Laatst online: 04-11-2024
Beste Tweakers,

Nou ben ik een gedeelte van mijn middag al bezig om heel simpel een formuliertje uit te rollen maar loop ik vast omdat ik iets niet voor elkaar krijg. Ik probeer namelijk 24 * 4 rijen te echo'en waar dan voor die 4 rijen ook individueel een nummering moet komen dus 24 * 4 = 96.

Natuurlijk begrijp je dat pas goed na een voorbeeld:

regel-a-1 config-a- 1
regel-b-1 config-b- 2
regel-c-1 config-c- 3
regel-d-1 config-d- 4

regel-a-2 config-a- 5
regel-b-2 config-b- 6
regel-c-2 config-c- 7
regel-d-2 config-d- 8


etc.





Mijn code ziet er op dit moment zo uit:

PHP: test.php
1
2
3
4
5
6
7
8
9
10
11
12
13
        $input = array();
      
  for($a = 1; $a < 25; $a++){
    for($b = 1; $b < 97; $b++){
      $input[$a] = "$b";        
    }
    $secinput .= "
        regel-a-$a  config-a- $inputa[$a] <br>
        regel-b-$a config-b- $inputb[$a] <br>
        regel-c-$a config-c- $inputc[$a] <br>
        regel-d-$a config-d- $inputd[$a] <br><hr>
        ";
    }


Ik weet zelf dat dit natuurlijk nooit de oplossing kan zijn voor mijn probleem maar ik heb al enkele andere varianten geprobeerd en ik kom er gewoon niet uit. Het zou natuurlijk op een andere manier opgesteld kunnen worden. Echter denk ik dat dit mogelijk moet zijn ik weet alleen niet hoe. :F ;(

Daarom mijn vraag: "Weet iemand hoe dit zou moeten of heeft dit een naam?"

Bij voorbaat dank :)

Groeten,

Meneer William

sirwilliam


  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 02-12 21:58

The Eagle

I wear my sunglasses at night

Ik kan me vergissen, maar volgens mij wil je op 3 niveaus recursiviteit toepassen. En ik zie er nu maar twee.
Haal je dit spul uit een DB btw? Of moet je alles los neerzetten?

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • meneer william
  • Registratie: Maart 2011
  • Laatst online: 04-11-2024
The Eagle schreef op dinsdag 11 september 2012 @ 16:59:
Ik kan me vergissen, maar volgens mij wil je op 3 niveaus recursiviteit toepassen. En ik zie er nu maar twee.
Haal je dit spul uit een DB btw? Of moet je alles los neerzetten?
Het moet een formulier worden zo als dit:


HTML: test.php
1
2
3
4
5
6
7
8
9
10
11
12
<div class='row'>
<div class='cell'>soort-1:</div> <div class='cell'><input type='text' placeholder='voorbeeld' maxlength='100' value='$conf[1]' name='conf_1'  /></div>
</div>
<div class='row'>
<div class='cell'>naam-1:</div> <div class='cell'><input type='text' placeholder='voorbeeld' maxlength='100' value='$conf[2]' name='conf_2' /></div>
</div>
<div class='row'>
<div class='cell'>nummer-1:</div> <div class='cell'><input type='text' placeholder='voorbeeld' maxlength='100' value='$conf[3]' name='conf_3'  /></div>
</div>
<div class='row'>
<div class='cell'>sneltoets-1:</div> <div class='cell'><input type='text' placeholder='voorbeeld' maxlength='100' value='$conf[4]' name='conf_4'  /></div>
</div>


wat dan weer lijkt op:

Vraag a 1 antwoord a 1 = antwoord 1
Vraag b 1 antwoord b 1 = antwoord 2
Vraag c 1 antwoord c 1 = antwoord 3
Vraag d 1 antwoord d 1 = antwoord 4

Vraag a 2 antwoord a 2 = antwoord 5
Vraag b 2 antwoord b 2 = antwoord 6
Vraag c 2 antwoord c 2 = antwoord 7
Vraag d 2 antwoord d 2 = antwoord 8

etc.

sirwilliam


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16:34

MueR

Admin Devschuur® & Discord

is niet lief

Als dat je HTML is, leer die diveritis alsjeblieft af. Voor tabelstructuren hebben we in de HTML een geweldige tag: table.

Anyone who gets in between me and my morning coffee should be insecure.


  • meneer william
  • Registratie: Maart 2011
  • Laatst online: 04-11-2024
MueR schreef op dinsdag 11 september 2012 @ 17:28:
Als dat je HTML is, leer die diveritis alsjeblieft af. Voor tabelstructuren hebben we in de HTML een geweldige tag: table.
Ik weet het zucht 8)7 |:(

Het klink misschien raar maar het is mij verboden de table structuur te gebruiken. Degene die de .CSS moet bewerken tot de opmaak goed is vind namelijk dat het zo beter te stylen is maar goed daar gaat het natuurlijk niet om.

Graag geen commentaar op HTML etc. Dit is slechts een voorbeeld van. Het gaat vooral om de werking als ik die begrijp kan ik het op tientallen manieren toepassen met table of zonder table.

sirwilliam


  • Waster
  • Registratie: September 2006
  • Laatst online: 14-04 17:49
Je kan toch gewoon een extra variabele bijhouden en die ophogen in de loop? Ik begrijp niet precies wat je probeert te bereiken, maar gezien je voorbeeld lijkt me dat je meer dan twee variabelen nodig hebt.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Mja, hoe moeilijk is het inderdaad om een extra variabele op te nemen in je for-loop die je ophoogt elke keer nadat $a deelbaar is door 4 (modulo)?

Daarnaast: commentaar op HTML mag je misschien niet graag willen hebben maar is zeker wel valide hier. Dit is redelijk stupide en in plaats van daarmee mee te gaan zou je dat terug moeten stuiteren als developer.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 13:10
Daarnaast kan je een karakter gemakkelijk met 1 ophogen (char -> int, +1, int -> char).

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Lijkt me allemaal een beetje onhandig om met modulos en/of conversies te gaan werken. :p Om niet meer woorden te gaan gebruiken dan dat er code is, lijkt me dit de normale implementatie:
PHP:
1
2
3
4
5
6
7
for($a = 1; $a < 25; $a++) {
    for($option = 'a'; $option <= 'd'; $option++) {
        $line++;
        $secinput .= "regel-$option-$a config-$option-$line <br>";
    }
    $secinput .= '<hr>';
}


En in het kader van php-wtf's werkt dit niet met 'z' : http://stackoverflow.com/...mply-print-letters-a-to-z

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Verwijderd

Stel je wilt 2 tellertjes bijhouden in een loop. Je kunt 2 loops gebruiken, je kunt het ook met één doen:
PHP:
1
2
3
4
5
for ($a = 0; $a < 24; $a++) {
   for ($b = 0; $b < 4; $b++) {
      // doe iets met $a+1 en/of $b+1.
   }
}

Of:
PHP:
1
2
3
4
5
for ($a = 1; $a <= 24; $a++) {
   for ($b = 1; $b <= 4; $b++) {
      // doe iets met $a en/of $b.
   }
}

Of:
PHP:
1
2
3
4
for ($x = 0; $x < 24*4; $x++) {
   $a = floor($x/4) + 1;
   $b = $x % 4 + 1;
}

De laatste vind ik zelf het mooist.
Als het met 3 variabelen moet, zijn de eerste 2 voorbeelden het makkelijkst uit te breiden, maar zorgen ze voor diepere nesting, wat vaak duidt op een slecht algoritme.
PHP:
1
2
3
4
5
for ($x = 0; $x < 24*4*5; $x++) {
   $a = floor($x/4/5) + 1;
   $b = floor($x/5) % 4 + 1;
   $c = $x % 5 + 1;
}

Als je hier even goed naar kijkt en probeert te begrijpen hoe de getalletjes samenwerken en hoe je van een "regelnummer" ($x) een setje van 3 verschillende waardes kunt maken, kun je dit overal toepassen waar je het ooit tegen gaat komen.

Merk op dat je dit ook als volgt kunt schrijven:
PHP:
1
2
3
4
5
for ($x = 0; $x < 24*4*5; $x++) {
   $a = floor($x/4/5) % 24 + 1; // moet elke 20 regels ophogen, tot een maximum van 24
   $b = floor($x/5) % 4 + 1; // moet elke 5 regels ophogen, tot een maximum van 4
   $c = floor($x) % 5 + 1; // moet elke regel ophogen, tot een maximum van 5
}

Je snapt nu vast wel hoe je dit verder kunt uitbreiden naar nog meer tellertjes.

  • Waster
  • Registratie: September 2006
  • Laatst online: 14-04 17:49
pedorus schreef op dinsdag 11 september 2012 @ 18:36:
Lijkt me allemaal een beetje onhandig om met modulos en/of conversies te gaan werken. :p Om niet meer woorden te gaan gebruiken dan dat er code is, lijkt me dit de normale implementatie:
PHP:
1
2
3
4
5
6
7
for($a = 1; $a < 25; $a++) {
    for($option = 'a'; $option <= 'd'; $option++) {
        $line++;
        $secinput .= "regel-$option-$a config-$option-$line <br>";
    }
    $secinput .= '<hr>';
}


En in het kader van php-wtf's werkt dit niet met 'z' : http://stackoverflow.com/...mply-print-letters-a-to-z
Dit is waar ik meer aan zat te denken. Modulo's? Hoe ingewikkeld wil je het maken :P

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$b = 1;
for($a = 1; $a < 96; $a+=4)
{
        if ($b > 24)
                break;

        echo "regel-a-$b config-a- ".($a)."\n";
        echo "regel-b-$b config-b- ".($a+1)."\n";
        echo "regel-c-$b config-c- ".($a+2)."\n";
        echo "regel-d-$b config-d- ".($a+3)."\n";


        echo "\n\n";
        $b++;
}
?>
regel-a-1 config-a- 1
regel-b-1 config-b- 2
regel-c-1 config-c- 3
regel-d-1 config-d- 4

regel-a-2 config-a- 5
regel-b-2 config-b- 6
regel-c-2 config-c- 7
regel-d-2 config-d- 8

regel-a-3 config-a- 9
regel-b-3 config-b- 10
regel-c-3 config-c- 11
regel-d-3 config-d- 12

regel-a-4 config-a- 13
regel-b-4 config-b- 14
regel-c-4 config-c- 15
regel-d-4 config-d- 16
<..>
?

edit:
Na wat inspiratie van meneer hierboven zijn quote:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

for ($line = 1; $line < 96; $line++)
{
        for($a = 1; $a <= 24; $a++) {
                for($option = 'a'; $option <= 'd'; $option++) {
                        echo "regel-$option-$a config-$option-$line\n";
                        $line++;
                }
                echo "\n";
        }
}

?>
ronald@tartarus:~/got$ php blaat2.php | head
regel-a-1 config-a-1
regel-b-1 config-b-2
regel-c-1 config-c-3
regel-d-1 config-d-4

regel-a-2 config-a-5
regel-b-2 config-b-6
regel-c-2 config-c-7
regel-d-2 config-d-8

ronald@tartarus:~/got$ php blaat2.php | tail
regel-a-23 config-a-89
regel-b-23 config-b-90
regel-c-23 config-c-91
regel-d-23 config-d-92

regel-a-24 config-a-93
regel-b-24 config-b-94
regel-c-24 config-c-95
regel-d-24 config-d-96
?

[ Voor 56% gewijzigd door webfreakz.nl op 11-09-2012 19:39 . Reden: 2 fixes :> en wat overbodige output weg. ]

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


  • meneer william
  • Registratie: Maart 2011
  • Laatst online: 04-11-2024
pedorus schreef op dinsdag 11 september 2012 @ 18:36:
Lijkt me allemaal een beetje onhandig om met modulos en/of conversies te gaan werken. :p Om niet meer woorden te gaan gebruiken dan dat er code is, lijkt me dit de normale implementatie:
PHP:
1
2
3
4
5
6
7
for($a = 1; $a < 25; $a++) {
    for($option = 'a'; $option <= 'd'; $option++) {
        $line++;
        $secinput .= "regel-$option-$a config-$option-$line <br>";
    }
    $secinput .= '<hr>';
}


En in het kader van php-wtf's werkt dit niet met 'z' : http://stackoverflow.com/...mply-print-letters-a-to-z
Top echt super _/-\o_ _/-\o_ _/-\o_ _/-\o_ _/-\o_ dit was precies wat ik wou weten. Wederom ik wou gewoon weten hoe je werkt met meerdere waardes binnen een loop en dat weet ik nu.

Wel jammer dat er toch veel gereageerd wordt met "Waarom gebruik je div's en geen table structuur" etc. Waarop ik zeg: "Het is maar een voorbeeld" .

Maar goed Pedorus jij bent de held van de dag. Bedank voor je reactie dit was zeer leerzaam voor een php beginneling.

BTW php wtf's echt super }:O }:O }:O

sirwilliam

Pagina: 1