Hoe kan ik de gegevens uit deze array juist plaatsen in een tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer / Overheid / Complexiteit

Functieomschrijving Wil jij als Java Developer een bijdrage leveren aan een veiliger Nederland en je als Java Developer bezig houden met zeer complexe bedrijfskritische applicaties? Lees dan snel verder! Doorontwikkelen bedrijfskritische applicaties; Aanpassingen maken in de bestaande applicatie; Vertalen van jouw visie op continuous integration en continuous delivery; Debuggen van de applicatie; In gesprek gaan met eindgebruikers om verbetervoorstellen op te halen. Functie-eisen Minimaal HBO-werk en denkniveau; Minimaal 5 jaar werkervaring als Java Developer; Je bent minimaal OCP-Java SE 6 gercertificeerd; Je hebt kennis van Webservices en Continuous Integration; Je bent analytisch sterk en zowel klant- als resultaatgericht. Bedrijfsomschrijving Binnen

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Snelle Jaap

Snelle Jaap

15/09/2020 13:05:31
Quote Anchor link
Ik heb de volgende array:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Array
(
    [2019] => Array
        (
            [Werkplek opgeruimd] => 6
            [Keuringsstickers op arbeidsmiddelen] => 1
            [Veilig gebruikte gereedschappen] => 2
            [Persoonlijke beschermingsmiddelen aanwezig, deugdelijk en juist] => 3
            [Veilige werkmethodes] => 3
        )

    [2020] => Array
        (
            [Veilig gebruikte gereedschappen] => 1
            [Persoonlijke beschermingsmiddelen aanwezig, deugdelijk en juist] => 2
            [Veilige werkmethodes] => 2
            [Werkplek opgeruimd] => 1
            [Materialen opslag veilig] => 1
        )

)


Hij is opgebouwd met het jaartal als key, daarin checklistvragen als key met als value het aantal afwijkingen (dit houd in situaties die niet OK waren).

Ik wil in een overzicht tonen hoeveel afwijkingen er waren per vraag, per jaar.

Op deze manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<table class="table table-hover">
   <thead>
      <tr>
         <th>Vraag</th>
         <th>2019</th>
         <th>2020</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>Werkplek opgeruimd</td>
         <td>6</td>
         <td>1</td>
      </tr>
      <tr>
         <td>Keuringstickers op arbeidsmiddelen</td>
         <td>1</td>
         <td>0</td>
      </tr>
   </tbody>
</table>


Etc

Hoe kan ik die gegevens op de juiste manier krijgen uit een loop? Alle vragen die een afwijking hebben moeten dus onder elkaar komen te staan (geen dubbele) met daarnaast per jaar hoeveel die afwijking voorkomt.
Gewijzigd op 15/09/2020 13:30:41 door Snelle Jaap
 
PHP hulp

PHP hulp

21/09/2020 18:42:52
 
- Ariën -
Beheerder

- Ariën -

15/09/2020 13:24:44
Quote Anchor link
Kijk eens naar de array_diff() functie.
 
Snelle Jaap

Snelle Jaap

15/09/2020 13:48:23
Quote Anchor link
- Ariën - op 15/09/2020 13:24:44:
Kijk eens naar de array_diff() functie.


Heb erover gelezen maar alsnog lastig de gewenste output te krijgen.

Met onderstaande output zou het makkelijk lukken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [Werkplek opgeruimd] => Array
    (
        [2019] => 6
        [2020] => 1
    )

    [Persoonlijke beschermingsmiddelen aanwezig, deugdelijk en juist] => Array
    (
        [2019] => 3
        [2020] => 2
    )

    [Materialen opslag veilig] => Array
    (
        [2019] => 0
        [2020] => 1
    )
)

Etc.
Maar het is de vraag hoe ik bovenstaand zo kan krijgen vanuit deze array opmaak:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Array
(
    [2019] => Array
        (
            [Werkplek opgeruimd] => 6
            [Keuringsstickers op arbeidsmiddelen] => 1
            [Veilig gebruikte gereedschappen] => 2
            [Persoonlijke beschermingsmiddelen aanwezig, deugdelijk en juist] => 3
            [Veilige werkmethodes] => 3
        )

    [2020] => Array
        (
            [Veilig gebruikte gereedschappen] => 1
            [Persoonlijke beschermingsmiddelen aanwezig, deugdelijk en juist] => 2
            [Veilige werkmethodes] => 2
            [Werkplek opgeruimd] => 1
            [Materialen opslag veilig] => 1
        )

)
 
Thomas van den Heuvel

Thomas van den Heuvel

15/09/2020 14:48:52
Quote Anchor link
Het enige wat je hoeft te doen is de rijen van het array omwisselen met de kolommen. Dit beschrijf je hierboven ook letterlijk. Dit lijkt mij niet zo'n moeilijke omzetting?
Gewijzigd op 15/09/2020 14:49:36 door Thomas van den Heuvel
 
- SanThe -

- SanThe -

15/09/2020 14:57:10
Quote Anchor link
Of je doet even ingewikkeld en je hebt precies wat je wilt.

Werkt ook als er een nieuw jaar bij komt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
# error reporting
ini_set('display_errors', 1);
error_reporting(E_ALL);

$array = array(    2019 => Array(    'Werkplek opgeruimd' => 6,
                                'Keuringsstickers op arbeidsmiddelen' => 1,
                                'Veilig gebruikte gereedschappen' => 2,
                                'Persoonlijke beschermingsmiddelen aanwezig, deugdelijk en juist' => 3,
                                'Veilige werkmethodes' => 3
                            ),
                2020 => Array(    'Veilig gebruikte gereedschappen' => 1,
                                'Persoonlijke beschermingsmiddelen aanwezig, deugdelijk en juist' => 2,
                                'Veilige werkmethodes' => 2,
                                'Werkplek opgeruimd' => 1,
                                'Materialen opslag veilig' => 1
                            )
                );

                
$arrayyears = array();
$arraykeys = array();
foreach($array as $year => $value)
{
    $arrayyears[] = $year;
    foreach($value as $key => $v)
    {
    $arraykeys[] = $key;
    }
}

$arraykeys = array_unique($arraykeys);
?>


<table class="table table-hover">
   <thead>
      <tr>
         <th>Vraag</th>
<?php
    foreach($arrayyears as $year) echo '<th>'.$year.'</th>';
?>

      </tr>
   </thead>
   <tbody>
<?php
    foreach($arraykeys as $key)
    {
    echo '<tr><td>'.$key.'</td>';
        foreach($arrayyears as $year) echo '<td>'.@$array[$year][$key].'</td>';
        echo '</tr>';
    }

?>

   </tbody>
</table>
Gewijzigd op 15/09/2020 15:02:12 door - SanThe -
 
Rob Doemaarwat

Rob Doemaarwat

15/09/2020 19:05:09
Quote Anchor link
Volgens mij bedoel je meer dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

$array
= [...]; //zie hierboven

$values = $diff = [];

foreach($array as $record) foreach($record as $key => $value){
  if(!array_key_exists($key,$values)){
    $values[$key] = $value; //referentie waarde
    $diff[$key] = false; //waarde wijkt niet of tov ref (duh)
  }
  elseif($value != $values[$key]) $diff[$key] = true; //afwijkende waarde
}

$keys = array_keys(array_filter($diff)); //voor deze keys wijkt de waarde af

print('<table><thead><tr><th>Vraag</th>');
foreach($keys as $key) print("<th>$key</th>");
print('</tr></thead><tbody>');

foreach($array as $year => $record){
  print("<tr><td>$year</td>");
  foreach($keys as $key) print("<td>{$record[$key]}</td>");
  print('</tr>');
}


print('</tbody></table>');

?>
 
- SanThe -

- SanThe -

15/09/2020 19:28:38
Quote Anchor link
@Rob Doemaarwat: Maar bij jou missen er enkele waarden.
 
Thomas van den Heuvel

Thomas van den Heuvel

15/09/2020 19:47:42
Quote Anchor link
Mja er missen enkele waarden voor bepaalde jaartallen (Keuringsstickers voor 2020 en Materialen opslag voor 2019).

Er zijn verschillende manieren om deze "gaten" nog op te vullen, maar het principe (rijen en kolommen verwisselen) blijft in grote lijnen hetzelfde.
 
Rob Doemaarwat

Rob Doemaarwat

15/09/2020 20:58:33
Quote Anchor link
O zo, het is ook de bedoeling dat keys die niet in het alle records zitten als "0" worden gezien (en dus ook hoogstwaarschijnlijk "niet gelijk"). Maar bij SanThe krijg je juist alle waarden, ook als ze in alle records gelijk zijn, en dat is volgens mij ook niet de bedoeling - het gaat om het aantal "afwijkingen" (?).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

$array
= [...]; //zie hierboven

$values = []; //hierin worden de referentie waarden verzameld
foreach($array as $record) $values += $record;
$diff = array_fill_keys($keys = array_keys($values),false); //init allen op false

foreach($array as $record) foreach($keys as $key)
  if(($record[$key] ?? 0) != $values[$key]) $diff[$key] = true; //diffs detecteren
$keys = array_keys(array_filter($diff)); //kolommen met een diff (niet meer false)

print('<table><thead><tr><th>Vraag</th>');
foreach($keys as $key) print("<th>$key</th>");
print('</tr></thead><tbody>');

foreach($array as $year => $record){
  print("<tr><td>$year</td>");
  foreach($keys as $key) print('<td>' . ($record[$key] ?? 0) . '</td>');
  print('</tr>');
}


print('</tbody></table>');

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.