Hallo,

Ik heb een vraagje ivm arrays aangemaakt via data uit sql tabel. Met deze code:


        $stmt = $pdo->prepare("SELECT ploeg,werkpost,maandag,dinsdag,woensdag,donderdag,vrijdag FROM weekoverzicht");
        $stmt->execute(); 
        $overzicht = $stmt->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_GROUP);


krijg ik volgend resultaat:


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] => -
                )

        )

Nu wil ik volgend resultaat bekomen:


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] => -
                )

        )


Hoe kan ik dit verkrijgen?
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:
<?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

?>
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:

echo $overzicht['A']['Brigadier']['maandag']


die me dan de naam toont die in die rij en in die kolom zit.
Niet getest:


<?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'];
}
?>
Bedankt voor je input!


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] => -
                )

        )

)

Reageren