Forum » Server-Side scripting » Code mogelijk korter maken
Berichten: 2103
avatar
Offline Stuur privebericht
Goedenavond,

Ik zit al tijdje te brainstormen over een code hoe die korter gedaan kan worden.
Kom er alleen niet helemaal uit en weet niet wat ik hier het beste voor kan gebruiken.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

if ($gebruiker['bank'] < 100)
{
    
$per    0;
}
elseif (
$gebruiker['bank'] >= 100 and $gebruiker['bank'] < 1000000)
{
    
$percent    0.01;
    
$per        1.0;
}
elseif (
$gebruiker['bank'] >= 1000000 and $gebruiker['bank'] < 3000000)
{
    
$percent    0.015;
    
$per        1.5;
}
elseif (
$gebruiker['bank'] >= 3000000 and $gebruiker['bank'] < 6000000)
{
    
$percent    0.02;
    
$per        2.0;
}
elseif (
$gebruiker['bank'] >= 6000000 and $gebruiker['bank'] < 10000000)
{
    
$percent    0.025;
    
$per        2.5;
}
elseif (
$gebruiker['bank'] >= 10000000 and $gebruiker['bank'] < 15000000)
{
    
$percent    0.03;
    
$per        3.0;
}
elseif (
$gebruiker['bank'] >= 15000000 and $gebruiker['bank'] < 21000000)
{
    
$percent    0.035;
    
$per        3.5;
}
elseif (
$gebruiker['bank'] >= 21000000 and $gebruiker['bank'] < 27000000)
{
    
$percent    0.04;
    
$per        4.0;
}
elseif (
$gebruiker['bank'] >= 27000000 and $gebruiker['bank'] < 35000000)
{
    
$percent    0.045;
    
$per        4.5;
}
elseif (
$gebruiker['bank'] >= 35000000)
{
    
$percent    0.05;
    
$per        5.0;
}
?>


Weet iemand een functie en kan er ook een klein voorbeeld bij hoe je het ongeveer moet doen?

Alvast bedankt!

Mvg,
Superior
12-07-2010 18:44
Dit topic is 146 keer bekeken door 37 verschillende leden
Reacties op: "Code mogelijk korter maken"
1
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Ik heb een paar ideeën...

Begin maar met de ifs in de andere volgorde te doen, dus van groot naar klein.
12-07-2010 18:52
Berichten: 2103
avatar
Offline Stuur privébericht
@Darsstar
Hoe bedoel je van groot naar klein, maakt dit enig verschil uit?
12-07-2010 18:58
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Ja, dan hoef je alleen te controleren of het groter is dan x...
Dan is er dus geen kleiner dan y meer bij, waardoor je ifs kleiner worden...

Doe dat, en ik vertel het volgende idee...
12-07-2010 19:06
Berichten: 2103
avatar
Offline Stuur privébericht
Hoop dat ik je correct begrepen heb, weet niet of dit is wat je bedoelde.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
if ($user['bank'] > 35000000)
{
    
$percent    0.05;
    
$per        5.0;
}
elseif (
$user['bank'] >= 27000000 and $user['bank'] < 35000000)
{
    
$percent    0.045;
    
$per        4.5;
}
elseif (
$user['bank'] >= 21000000 and $user['bank'] < 27000000)
{
    
$percent    0.04;
    
$per        4.0;
}
elseif (
$user['bank'] >= 15000000 and $user['bank'] < 21000000)
{
    
$percent    0.035;
    
$per        3.5;
}
elseif (
$user['bank'] >= 10000000 and $user['bank'] < 15000000)
{
    
$percent    0.03;
    
$per        3.0;
}
elseif (
$user['bank'] >= 6000000 and $user['bank'] < 10000000)
{
    
$percent    0.025;
    
$per        2.5;
}
elseif (
$user['bank'] >= 3000000 and $user['bank'] < 6000000)
{
    
$percent    0.02;
    
$per        2.0;
}
elseif (
$user['bank'] >= 1000000 and $user['bank'] < 3000000)
{
    
$percent    0.015;
    
$per        1.5;
}
elseif (
$user['bank'] >= 100 and $user['bank'] < 1000000)
{
    
$percent    0.01;
    
$per        1.0;
}
elseif (
$user['bank'] < 100)
{
    
$per        0;
}
12-07-2010 19:19
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Niet bepaald nee...

Wat als $user['bank'] nu precies 35E6 (35000000) is?

*gaat er van uit dat je van de eerste > een >= operator maakt*

Waarom staat de < 35E6 controle er nog?
Je weet dat je daar nooit aan zal komen als het groter of gelijk is aan 35E6...
Het zelfde geld voor alle andere controlles na de "and", die zijn tutaal nutteloos geworden...
Dus je code is verkort wanneer je die weg haalt...

*wacht nu op het aangepaste script in een edit of de volgende reactie*
12-07-2010 19:40
Berichten: 2103
avatar
Offline Stuur privébericht
Snap echt niet wat je ermee bedoelt.......

Als het precies 35.000.000 is zal hij 5% geven, dit is getest.
12-07-2010 19:45
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
if ($user['bank'] > 35000000)
{
    
$percent    0.05;
    
$per        5.0;
}
elseif (
$user['bank'] >= 27000000 and $user['bank'] < 35000000)


Ik zie een is-groter-dan en een is-kleiner-dan controlle (voor het getal 35E6)...
Nogmaals: wat ls $user['bank'] precies 35E6 is?
De eerste keer dat je code poste stond er toch echt een is-groter-of-gelijk-aan controlle...
12-07-2010 19:50
BOE!
Berichten: 459
avatar
Offline Stuur privébericht
Die user['bank'] is gewoon kijken in de tabel(MYSQL) leden wie er zoveel geld geeft staan.

Alle denk ik dan toch maar volgens mij wel
12-07-2010 19:53
Vreemd
Berichten: 1246
avatar
Offline Stuur privébericht
HUH?

Ik wil dus duidelijk maken die die if's het getal 35E6 niet dekken...
Nu dat hopelijk duidelijk is.

waarom zou je nog controleren of $user['bank'] lager is dan 35E6?
het volgende werkt precies het zelfde als de code in de OP:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
if ($user['bank'] >= 35000000)
{
    
$percent    0.05;
    
$per        5.0;
}
elseif (
$user['bank'] >= 27000000)
{
    
$percent    0.045;
    
$per        4.5;
}
elseif (
$user['bank'] >= 21000000)
{
    
$percent    0.04;
    
$per        4.0;
}
elseif (
$user['bank'] >= 15000000)
{
    
$percent    0.035;
    
$per        3.5;
}
elseif (
$user['bank'] >= 10000000)
{
    
$percent    0.03;
    
$per        3.0;
}
elseif (
$user['bank'] >= 6000000)
{
    
$percent    0.025;
    
$per        2.5;
}
elseif (
$user['bank'] >= 3000000)
{
    
$percent    0.02;
    
$per        2.0;
}
elseif (
$user['bank'] >= 1000000)
{
    
$percent    0.015;
    
$per        1.5;
}
elseif (
$user['bank'] >= 100)
{
    
$percent    0.01;
    
$per        1.0;
}
else
{
    
$per        0;
}


MINDER CODE!!!
Doel bereikt!

Maar het kan korter...
$percent en $per lopen nu af...
Dus als je een loop maakt die door een array loopt die de waardes uit de if bevat, dan haal je telkens iets van beide variabele af als het lager is dan de waarde.
12-07-2010 20:01
Reageer op: "Code mogelijk korter maken"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden