[opgelost] script naar array
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function maakarray(){
$args = func_get_args();
$total = 0;
foreach($args as $arg)
{
// !@#$%^&*() \\
$total = $total + 1;
}
}
maakarray("naam", "Tom", "leeftijd", "26", "woonplaats", "Amsterdam");
?>
function maakarray(){
$args = func_get_args();
$total = 0;
foreach($args as $arg)
{
// !@#$%^&*() \\
$total = $total + 1;
}
}
maakarray("naam", "Tom", "leeftijd", "26", "woonplaats", "Amsterdam");
?>
Er staat "naam", "Tom", "leeftijd", "26", "woonplaats", "Amsterdam".
Nu wil ik dat daarvan een array word gemaakt die er zo uit komt te zien:
$array[naam] = "Tom";
$array[leeftijd] = "26";
$array[woonplaats] = "Amsterdam";
Heeft iemand enig idee hoe ik dit kan aanpakken?
In mijn script heb ik gebruik gemaakt van foreach(..), ik denk niet dat dit kan werken aangezien je 2 waardes nodig hebt om een array te vormen.
Toevoeging op 31/12/2012 19:30:53:
Het is me gelukt.
Het was een simpel if(..) formuletje toepassen, waar ik niet aan had gedacht.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Gewijzigd op 31/12/2012 19:31:05 door Tom aan t Goor
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
function maakArray()
{
// makkelijk maken
$argumenten = func_get_args();
$aantal = count($aantal); // of func_num_args() gebruiken?
// zijn er wel argumenten... en zijn ze in 2-tallen?
if($aantal == 0 OR ($aantal % 2) != 0)
{
return false;
}
// argumenten aflopen: stappen van 2 nemen
for($i = 0; $i <= func_num_args; $i += 2)
{
// nieuwe array maken met huidige sleutel... en +1 is dus de waarde
$array[$argumenten[$i]] = $argumenten[$i + 1];
}
// returnen
return $array;
}
?>
function maakArray()
{
// makkelijk maken
$argumenten = func_get_args();
$aantal = count($aantal); // of func_num_args() gebruiken?
// zijn er wel argumenten... en zijn ze in 2-tallen?
if($aantal == 0 OR ($aantal % 2) != 0)
{
return false;
}
// argumenten aflopen: stappen van 2 nemen
for($i = 0; $i <= func_num_args; $i += 2)
{
// nieuwe array maken met huidige sleutel... en +1 is dus de waarde
$array[$argumenten[$i]] = $argumenten[$i + 1];
}
// returnen
return $array;
}
?>
Toevoeging op 31/12/2012 19:33:14:
Ja, gut .... gaat ie tijdens het maken van mijn antwoord met een eigen (vergelijkbaar) antwoord komen. Zo jammer...
Toevoeging op 31/12/2012 19:34:53:
Trouwens: wat jij hier doet:
Kan beter zo:
Eddy Erkelens op 31/12/2012 19:32:36:
Alsnog bedankt voor je reactie.
En ik snap niet wat er bij deze if gebeurt, aangezien ik zo iets nog nooit heb gezien.
Kan je me dit uitleggen?
8 / 2 = 4 natuurlijk.
9 / 2 = 4.5.
8 % 2 = 0, want je kan het delen door de 2 ZONDER REST.
9 % 2 = 1, want je kan 4x2 doen, en dan hou je nog 1 over.
2.50 % 0.50 = 0 (want je kan 5x 0,50 doen)
2,51 % 0.50 = 0.01 (want die hou je over).
Dus eigenlijk een berekenaar van de rest (deelsommen met rest).
Toevoeging op 01/01/2013 12:58:49:
Maar goed... wat is nou makkelijker?
Zo'n functie met deze aanroep:
Code (php)
1
2
3
2
3
<?php
$array = maakarray("naam", "Tom", "leeftijd", "26", "woonplaats", "Amsterdam")
?>
$array = maakarray("naam", "Tom", "leeftijd", "26", "woonplaats", "Amsterdam")
?>
Of gewoon direct array maken:
Eventueel via PHP-'s functies:
Persoonlijk vind ik de onderste dan toch echt makkelijker, beter en logischer.
Gewijzigd op 31/12/2012 20:08:17 door Eddy E
Om nog even terug te komen op de volgende code:
Nu is dit het resultaat:
$total = 10; <- if() wordt niet uitgevoerd.
$total = 10.5 <- if() wordt wel uitgevoerd.
$total = 11 <- if() wordt wel uitgevoerd.
Dat komt omdat je heb eerst enkele keren door 2 deelt en krijg je bij het getal 11 dus nog 1 over. (Dit is dus voor alle oneven getallen).
Moet dit dan niet de code worden?
Gewijzigd op 07/01/2013 11:30:54 door Tom aan t Goor
Nee want dan kan je beter checken of je waarde een integer is
Tom Tom op 07/01/2013 11:29:56:
Moet dit dan niet de code worden?
Ik heb de rest niet gevolgd, maar het zou me verwonderen.
(0 && 1) gaat altijd 0 geven; en is dus vrij ... nutteloos.
if($total % 2)
is, strikt gezien, trouwens voldoende.
Gewijzigd op 07/01/2013 11:49:05 door Kris Peeters
Kris Peeters op 07/01/2013 11:40:06:
Ik heb de rest niet gevolgd, maar het zou me verwonderen.
(0 && 1) gaat altijd 0 geven; en is dus vrij ... nutteloos.
if($total % 2)
is, strikt gezien, trouwens voldoende.
Tom Tom op 07/01/2013 11:29:56:
Moet dit dan niet de code worden?
Ik heb de rest niet gevolgd, maar het zou me verwonderen.
(0 && 1) gaat altijd 0 geven; en is dus vrij ... nutteloos.
if($total % 2)
is, strikt gezien, trouwens voldoende.
Dan werkt het wel bij even getallen maar niet bij oneven?
Als je zowel de even als de oneven getallen nodig hebt, is deze if() uiteraard nutteloos, en kan je ze simpelweg weglaten.
maar uhh...
Zoals ook Eddy zei, het is juist een reactie op lijn 7 (2e code blok) van jouw eerst post. Die lijn kan anders geschreven worden; korter en logischer.
if( ($total/2) != round($total/2) ){
=
if($total % 2 != 0)
=
if($total % 2)
Die lijn code is jouw code. Dus: wat bedoelde jij met die lijn?
Gewijzigd op 07/01/2013 14:15:42 door Kris Peeters