PHP interesse |
|
Het is misschien een basisvraag, maar ik kom er niet echt aan uit.
Voornamelijk omdat het als een wiskundig vraagstuk moet worden opgelost en ik superslecht in exacte vakken ben.
Ik heb een code nodig met lengte x.
Deze lengte moet even zijn.
Dit is mij zo gelukt:
if($lengte%2==0){
// blablabla
}
else{
// blablabla
}
if($lengte%2==0){ // blablabla } else{ // blablabla }
Nu dienen de laatste 2 getallen als controlegetal, dus:
Vervolgens laat ik via een for-loop de code aanmaken.
for($i=1;$i<=$nieuwelengte;$i++){
$code.=rand(0,9);
}
for($i=1;$i<=$nieuwelengte;$i++){ }
Dan bepaal ik het aantal paren.
$aantalparen=$nieuwelengte/2;
$aantalparen=$nieuwelengte/2;
Tot zover gaat alles nog goed.
Nu wil ik van de tot nu toe gegenereerde code, de paren optellen en het ronde gemiddelde pakken.
Bijv. 12345678 -> (12+34+56+78)/4=45 (=controlegetal!).
De code moet dus worden: 1234567845.
Ik weet hoe ik het controlegetal moet toevoegen aan de string.
Het lukt me ook om getallen op te tellen en te delen.
Mijn probleem is alleen dat ik niet weet hoe ik een x aantal paren kan laten genereren en vervolgens optellen.
Ik weet wel hoe ik dit bij een bepaald aantal paren kan doen, maar dit werkt niet:
$b=0;
$e=2;
for($j=1;$j<=$aantalparen;$j++){
"$paar".$j=substr($code,$b,$e);
$b=$b+2;
$e=$b+2;
}
$b=0; $e=2; for($j=1;$j<=$aantalparen;$j++){ "$paar".$j=substr($code,$b,$e); $b=$b+2; $e=$b+2; }
Hij ziet $paar nu niet meer als een variabele, maar als een string.
Wie kan mij helpen?
Update:
Zojuist ben ik bij 'Snel vragen' geholpen met mijn probleem.
Vreemd, want zo vaak zijn er daar geen gebruikers actief als ik er ben.
De oplossing luidde als volgt:
for($i=1;$i<=$nieuwelengte;$i++){
$code.=rand(0,9);
if($i%2==0){
$code.="/";
}
else{
}
}
$aantalparen=$minlengte/2;
$explodecode=explode("/",$code);
$eindgetal=0;
for($j=0;$j<=$aantalparen;$j++){
$eindgetal=$eindgetal+$explodecode[$j];
}
$code.=round($eindgetal/$aantalparen);
for($i=1;$i<=$nieuwelengte;$i++){ if($i%2==0){ $code.="/"; } else{ } } $aantalparen=$minlengte/2; $eindgetal=0; for($j=0;$j<=$aantalparen;$j++){ $eindgetal=$eindgetal+$explodecode[$j]; } $code.=round($eindgetal/$aantalparen);
|