Allerlei functies met arrays (uitgebreid)
Er zijn heel wat functies die je kunt gebruiken bij arrays; de meest gebruikte ga ik in dit hoofdstuk proberen te behandelen.
1. sort ()
Code (php)
output: 0 : a_vincent 1 : b_veronique 2 : k_david 3 : x_thomas
sort sorteert de elementen (bv.'thomas') op alfanumerieke waarde. De index verandert echter niet, het eerste element is nu 'a_vincent' maar hij heeft de index van 'thomas'.
2. asort ()
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
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
[code]<?php
$users = array ( 'x_thomas', 'k_david', 'a_vincent', 'b_veronique');
asort ($users);
foreach ($users as $id => $name) {
echo $id, ' : ', $name, ' ';
}
?>
[i]output: 2 : a_vincent 3 : b_veronique 1 : k_david 0 : x_thomas [/i]
[u]sort[/u] sorteert de elementen (bv.'thomas') op alfanumerieke waarde. Dit keer blijft de index "plakken" aan het element wat een voordeel is als je met associatieve arrays werkt.
[b]3. count () & sizeof ()[/b]
<?php
$users = array ( 1 => 'thomas' , 2 => 'david');
// met count
$num_1 = count ($users);
// met sizeof
$num_2 = sizeof ($users);
echo $num_1, " = count () <br>", $num_2, " = sizeof ()";
?>
[i]output: 2 = count () 2 = sizeof () [/i]
[u]count () & sizeof ()[/u] tellen het aantal elementen van een array.
count en sizeof zijn equivalent!
[b]4. array_flip ()[/b]
<?php
$users = array ( 'thomas', 'david', 'vincent', 'veronique');
$users = array_flip ($users);
foreach ($users as $id => $name) {
echo $id, ' : ', $name, ' ';
}
?>
[i]output: thomas : 0 david : 1 vincent : 2 veronique : 3[/i]
[u]array_flip()[/u] verwisselt de keys met de verbonden elementen in een array.
[b]5. array_reverse ()[/b]
<?php
$users = array ('thomas', 'david', 'vincent', 'veronique');
$result = array_reverse ($users);
// oorspronkelijke array
foreach ($users as $id => $name) {
echo $name, ' ';
}
echo '<br>';
// array met reverse
foreach ($result as $id => $name) {
echo $name, ' ';
}
?>
[i]output: thomas david vincent veronique
veronique vincent david thomas[/i]
[u]array_reverse()[/u] de elementen van een array worden in omgekeerde volgorde gezet.
[b]6. shuffle ()[/b]
<?php
$users = range (1,20);
shuffle ($users);
foreach ($users as $id => $name) {
echo $name, ' ';
}
?>
[i]output 1: 1 12 7 9 19 4 5 3 8 14 13 18 15 10 6 20 17 16 2 11[/i]
[i]output 2: 7 19 8 20 9 3 14 16 18 1 15 11 2 5 4 17 10 12 13 6[/i]
[u]shuffle()[/u] rangschikt de elementen van een array in willekeurige volgorde.
[b]7. range ()[/b]
<?php
$maak_var= range(1, 20);
while (list(, $var) = each($maak_var)) {
echo $var," ";
}
echo "<br><br> ";
?>
[i]output: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [/i]
[u]range[/u] accepteert 2 integers om dan alle getallen die zich tussen die 2 integers bevinden, in dit voorbeeld 1 en 10 te genereren.
<?php
$mijn_array = range (1,5)
// is dus equivalent aan
$mijn_array = array (1, 2, 3, 4, 5);
?>
[b]8. in_array ()[/b]
<?php
$users = array ( 1 => 'thomas' , 2 => 'david');
if (in_array('thomas', $users, true)) //', true kan je weglaten' ; voor zover ik weet is er geen verschil.
echo "thomas bestaat in \$users" ;
?>
[i]output: thomas bestaat in $users[/i]
[u]in_array[/u] doorzoekt een array op een element en geeft true weer als de array het element bevat, anders false. (hoofdlettergevoelig)
[b]9. is_array ()[/b]
<?php
$users = array ('thomas', 'david', 'vincent', 'veronique');
if (is_array ($users)){
echo '$users is een array';
} else {
echo '$users is GEEN array';
}
?>
[i]output: $users is een array[/i]
[u]is_array[/u] zal controleren of de ingevulde variabele een array is of niet.
[b]10. array_multisort ()[/b]
<?php
$multi_array = array (1 => array ( 'thomas', 'david', 'veronique'), 2 => array ( 70, 30, 120) );
array_multisort ($multi_array[1], SORT_ASC, SORT_STRING,
$multi_array[2], SORT_NUMERIC, SORT_DESC);
$num = count ($multi_array) + 1;
for ($i = 1 ; $i < $num ; $i++){
foreach ($multi_array[$i] as $key => $value) {
echo $key, ': ', $value, '<br>';
}
echo '<br>';
}
?>
[i]output: 0: david 1: thomas 2: veronique 0: 30 1: 70 2: 120[/i]
[u]array_multisort[/u] sorteren van meerdere of multi-dimensionale arrays. Als je goed kijkt zie je dat ik een systeempje heb inschreven dat ervoor zorgt dat ik het script niet verder moet aanpassen als ik een element of een array toevoeg.
Functies die in de loop der tijden nog zullen worden toegevoegt: reset (), aray_multisort(), array_walk, current (), next (), end (), prev (), key(), each (),...
Op www.php.net onder array functions kan je een volledige lijst met functies voor arrays vinden. Op phpfreakz.nl staat ook artikel over arrays, weliswaar korter maar daarom niet minder interresant. Daar kan je ook een artikel over multisort lezen door Martijn Korse.
Zo, nu je klaar bent met deze tutorial zou je toch al iets meer moeten weten met arrays. Als je zelf nog voorstellen hebt voor functies kan je mij die altijd geven. :p
[code]<?php
$users = array ( 'x_thomas', 'k_david', 'a_vincent', 'b_veronique');
asort ($users);
foreach ($users as $id => $name) {
echo $id, ' : ', $name, ' ';
}
?>
[i]output: 2 : a_vincent 3 : b_veronique 1 : k_david 0 : x_thomas [/i]
[u]sort[/u] sorteert de elementen (bv.'thomas') op alfanumerieke waarde. Dit keer blijft de index "plakken" aan het element wat een voordeel is als je met associatieve arrays werkt.
[b]3. count () & sizeof ()[/b]
<?php
$users = array ( 1 => 'thomas' , 2 => 'david');
// met count
$num_1 = count ($users);
// met sizeof
$num_2 = sizeof ($users);
echo $num_1, " = count () <br>", $num_2, " = sizeof ()";
?>
[i]output: 2 = count () 2 = sizeof () [/i]
[u]count () & sizeof ()[/u] tellen het aantal elementen van een array.
count en sizeof zijn equivalent!
[b]4. array_flip ()[/b]
<?php
$users = array ( 'thomas', 'david', 'vincent', 'veronique');
$users = array_flip ($users);
foreach ($users as $id => $name) {
echo $id, ' : ', $name, ' ';
}
?>
[i]output: thomas : 0 david : 1 vincent : 2 veronique : 3[/i]
[u]array_flip()[/u] verwisselt de keys met de verbonden elementen in een array.
[b]5. array_reverse ()[/b]
<?php
$users = array ('thomas', 'david', 'vincent', 'veronique');
$result = array_reverse ($users);
// oorspronkelijke array
foreach ($users as $id => $name) {
echo $name, ' ';
}
echo '<br>';
// array met reverse
foreach ($result as $id => $name) {
echo $name, ' ';
}
?>
[i]output: thomas david vincent veronique
veronique vincent david thomas[/i]
[u]array_reverse()[/u] de elementen van een array worden in omgekeerde volgorde gezet.
[b]6. shuffle ()[/b]
<?php
$users = range (1,20);
shuffle ($users);
foreach ($users as $id => $name) {
echo $name, ' ';
}
?>
[i]output 1: 1 12 7 9 19 4 5 3 8 14 13 18 15 10 6 20 17 16 2 11[/i]
[i]output 2: 7 19 8 20 9 3 14 16 18 1 15 11 2 5 4 17 10 12 13 6[/i]
[u]shuffle()[/u] rangschikt de elementen van een array in willekeurige volgorde.
[b]7. range ()[/b]
<?php
$maak_var= range(1, 20);
while (list(, $var) = each($maak_var)) {
echo $var," ";
}
echo "<br><br> ";
?>
[i]output: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [/i]
[u]range[/u] accepteert 2 integers om dan alle getallen die zich tussen die 2 integers bevinden, in dit voorbeeld 1 en 10 te genereren.
<?php
$mijn_array = range (1,5)
// is dus equivalent aan
$mijn_array = array (1, 2, 3, 4, 5);
?>
[b]8. in_array ()[/b]
<?php
$users = array ( 1 => 'thomas' , 2 => 'david');
if (in_array('thomas', $users, true)) //', true kan je weglaten' ; voor zover ik weet is er geen verschil.
echo "thomas bestaat in \$users" ;
?>
[i]output: thomas bestaat in $users[/i]
[u]in_array[/u] doorzoekt een array op een element en geeft true weer als de array het element bevat, anders false. (hoofdlettergevoelig)
[b]9. is_array ()[/b]
<?php
$users = array ('thomas', 'david', 'vincent', 'veronique');
if (is_array ($users)){
echo '$users is een array';
} else {
echo '$users is GEEN array';
}
?>
[i]output: $users is een array[/i]
[u]is_array[/u] zal controleren of de ingevulde variabele een array is of niet.
[b]10. array_multisort ()[/b]
<?php
$multi_array = array (1 => array ( 'thomas', 'david', 'veronique'), 2 => array ( 70, 30, 120) );
array_multisort ($multi_array[1], SORT_ASC, SORT_STRING,
$multi_array[2], SORT_NUMERIC, SORT_DESC);
$num = count ($multi_array) + 1;
for ($i = 1 ; $i < $num ; $i++){
foreach ($multi_array[$i] as $key => $value) {
echo $key, ': ', $value, '<br>';
}
echo '<br>';
}
?>
[i]output: 0: david 1: thomas 2: veronique 0: 30 1: 70 2: 120[/i]
[u]array_multisort[/u] sorteren van meerdere of multi-dimensionale arrays. Als je goed kijkt zie je dat ik een systeempje heb inschreven dat ervoor zorgt dat ik het script niet verder moet aanpassen als ik een element of een array toevoeg.
Functies die in de loop der tijden nog zullen worden toegevoegt: reset (), aray_multisort(), array_walk, current (), next (), end (), prev (), key(), each (),...
Op www.php.net onder array functions kan je een volledige lijst met functies voor arrays vinden. Op phpfreakz.nl staat ook artikel over arrays, weliswaar korter maar daarom niet minder interresant. Daar kan je ook een artikel over multisort lezen door Martijn Korse.
Zo, nu je klaar bent met deze tutorial zou je toch al iets meer moeten weten met arrays. Als je zelf nog voorstellen hebt voor functies kan je mij die altijd geven. :p
Inhoudsopgave
- Inleiding
- Controlestructuren met arrays
- Associatieve arrays koppelen met foreach
- Meerdimensionale of Multidimensionele arrays
- Arrays resetten / wijzigen / toevoegen
- Allerlei functies met arrays (uitgebreid)