Array help
Ik heb een vraagje ivm arrays aangemaakt via data uit sql tabel. Met deze code:
Code (php)
1
2
3
2
3
$stmt = $pdo->prepare("SELECT ploeg,werkpost,maandag,dinsdag,woensdag,donderdag,vrijdag FROM weekoverzicht");
$stmt->execute();
$overzicht = $stmt->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_GROUP);
$stmt->execute();
$overzicht = $stmt->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_GROUP);
krijg ik volgend resultaat:
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
Array
(
[A] => Array
(
[0] => Array
(
[werkpost] => Brigadier
[maandag] => W
[dinsdag] => W
[woensdag] => W
[donderdag] => W
[vrijdag] => W
)
[1] => Array
(
[werkpost] => Marina
[maandag] => C
[dinsdag] => C
[woensdag] => C
[donderdag] => C
[vrijdag] => -
)
)
(
[A] => Array
(
[0] => Array
(
[werkpost] => Brigadier
[maandag] => W
[dinsdag] => W
[woensdag] => W
[donderdag] => W
[vrijdag] => W
)
[1] => Array
(
[werkpost] => Marina
[maandag] => C
[dinsdag] => C
[woensdag] => C
[donderdag] => C
[vrijdag] => -
)
)
Nu wil ik volgend resultaat bekomen:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Array
(
[A] => Array
(
[Brigadier] => Array
(
[maandag] => W
[dinsdag] => W
[woensdag] => W
[donderdag] => W
[vrijdag] => W
)
[Marina] => Array
(
[maandag] => C
[dinsdag] => C
[woensdag] => C
[donderdag] => C
[vrijdag] => -
)
)
(
[A] => Array
(
[Brigadier] => Array
(
[maandag] => W
[dinsdag] => W
[woensdag] => W
[donderdag] => W
[vrijdag] => W
)
[Marina] => Array
(
[maandag] => C
[dinsdag] => C
[woensdag] => C
[donderdag] => C
[vrijdag] => -
)
)
Hoe kan ik dit verkrijgen?
Gewijzigd op 05/10/2022 19:06:51 door Frederick Dekempe
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$data = [...]; //array van records
$data = array_combine(
array_column($data,'werkpost'), //keys afleiden uit kolom "werkpost"
$data //bestaande records behouden (dus ook kolom "werkpost"!)
); //$data bevat nu dezelfde data als voorheen, maar nu met de kolom "werkpost" als key
?>
$data = [...]; //array van records
$data = array_combine(
array_column($data,'werkpost'), //keys afleiden uit kolom "werkpost"
$data //bestaande records behouden (dus ook kolom "werkpost"!)
); //$data bevat nu dezelfde data als voorheen, maar nu met de kolom "werkpost" als key
?>
ID - ploeg - werkpost - jaar - week - maandag - dinsdag - woensdag - donderdag - vrijdag
Met de FETCH_GROUP kan ik ploeg wel als array index krijgen, maar werkpost eronder krijgen lukt maar niet.
Finaal wil ik volgende kunnen bereiken:
die me dan de naam toont die in die rij en in die kolom zit.
Gewijzigd op 05/10/2022 19:07:30 door Frederick Dekempe
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
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
<?php
$sql = "
SELECT
ploeg,
werkpost,
maandag,
dinsdag,
woensdag,
donderdag,
vrijdag
FROM weekoverzicht
ORDER BY ploeg ASC, werkpost ASC
";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$overzicht = [];
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$ploeg = null;
$werkpost = null;
foreach ($rows as $row) {
if ($row['ploeg'] != $ploeg) {
$ploeg = $row['ploeg'];
}
if ($row['werkpost'] != $werkpost) {
$werkpost = $row['werkpost'];
}
$overzicht[$ploeg][$werkpost]['maandag'] = $row['maandag'];
$overzicht[$ploeg][$werkpost]['dinsdag'] = $row['dinsdag'];
$overzicht[$ploeg][$werkpost]['woensdag'] = $row['woensdag'];
$overzicht[$ploeg][$werkpost]['donderdag'] = $row['donderdag'];
$overzicht[$ploeg][$werkpost]['vrijdag'] = $row['vrijdag'];
}
?>
$sql = "
SELECT
ploeg,
werkpost,
maandag,
dinsdag,
woensdag,
donderdag,
vrijdag
FROM weekoverzicht
ORDER BY ploeg ASC, werkpost ASC
";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$overzicht = [];
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$ploeg = null;
$werkpost = null;
foreach ($rows as $row) {
if ($row['ploeg'] != $ploeg) {
$ploeg = $row['ploeg'];
}
if ($row['werkpost'] != $werkpost) {
$werkpost = $row['werkpost'];
}
$overzicht[$ploeg][$werkpost]['maandag'] = $row['maandag'];
$overzicht[$ploeg][$werkpost]['dinsdag'] = $row['dinsdag'];
$overzicht[$ploeg][$werkpost]['woensdag'] = $row['woensdag'];
$overzicht[$ploeg][$werkpost]['donderdag'] = $row['donderdag'];
$overzicht[$ploeg][$werkpost]['vrijdag'] = $row['vrijdag'];
}
?>
Gewijzigd op 05/10/2022 19:28:30 door Jan Koehoorn
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
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
Array
(
[A] => Array
(
[Brigadier] => Array
(
[maandag] => W
[dinsdag] => W
[woensdag] => W
[donderdag] => W
[vrijdag] => W
)
[Marina] => Array
(
[maandag] => C
[dinsdag] => C
[woensdag] => C
[donderdag] => C
[vrijdag] => -
)
)
[B] => Array
(
[Brigadier] => Array
(
[maandag] => V
[dinsdag] => V
[woensdag] => V
[donderdag] => V
[vrijdag] => V
)
[Marina] => Array
(
[maandag] => G
[dinsdag] => V
[woensdag] => -
[donderdag] => -
[vrijdag] => -
)
)
)
(
[A] => Array
(
[Brigadier] => Array
(
[maandag] => W
[dinsdag] => W
[woensdag] => W
[donderdag] => W
[vrijdag] => W
)
[Marina] => Array
(
[maandag] => C
[dinsdag] => C
[woensdag] => C
[donderdag] => C
[vrijdag] => -
)
)
[B] => Array
(
[Brigadier] => Array
(
[maandag] => V
[dinsdag] => V
[woensdag] => V
[donderdag] => V
[vrijdag] => V
)
[Marina] => Array
(
[maandag] => G
[dinsdag] => V
[woensdag] => -
[donderdag] => -
[vrijdag] => -
)
)
)