Array help
Hallo,
Ik heb een vraagje ivm arrays aangemaakt via data uit sql tabel. Met deze code:
krijg ik volgend resultaat:
Nu wil ik volgend resultaat bekomen:
Hoe kan ik dit verkrijgen?
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
Ik kan je output niet helemaal rijmen met je code, maar als je een array hebt waarbij je als key een waarde uit de records wilt gebruiken, dan kun je:
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
?>
Mijn tabel is met deze kolommen opgemaakt:
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.
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
Niet getest:
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
Bedankt voor je input!
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] => -
)
)
)




