Ik heb onderstaande foutmelding. Waarom?
Lijn 11=lijn 1038
Bedankt Jan

if (count($subtotaals)>0) {
    $tabel .= '<tfoot><tr>';
    for($i=0;$i<count($subtotaals);$i++) {
        $b=$subtotaals[$i];
        $tabel .=  '<td>';
        
        for($a=0;$a<count($subtotaals);$a++) {
            $txt='';
            $k=$subtotaals[$a][0];
            foreach($k as $c) {
                switch (strtoupper($c)) {
                    if ($c != '') {
                        case 'AVG':
                            $txt = $aggregates['SUM'] / count($data);
                            break;
                        case 'COUNT':
                            $txt = count($data);
                            break;
                        case 'UNIQUE':
                            $unique = $aggregates['UNIQUE'];
                            $unique = array_unique($unique);
                            $txt = count($unique);
                            break;
                        case 'DISTINCT':
                            $DISTINCT = $aggregates['DISTINCT'];
                            $txt = count($DISTINCT);
                            break;
                        case 'MAX':
                            $txt = max($aggregates['MAX']);
                            break;
                        case 'MIN':
                            $txt = min($aggregates['MIN']);
                            break;
                        case 'SUM':
                            $txt = $aggregates['SUM'];
                            break;
                    }
                    $tabel .= '<div>' . $k . ': ' . $txt . '</div>';
                }
            }
        }
        $tabel .= '</td>';
    }
    $tabel .= '</tr>
    </tfoot>';
}

Parse error: syntax error, unexpected token "if", expecting "case" or "default" or "}" in line 1038
In een switch {} wordt een case verwacht, en geen tussentijdse if, of wat anders.
De error is overigens vrij duidelijk. ;-)

Die if hoort om je switch() en niet erin.
Ook om switch heen zou de if geen zin hebben: er is geen case voor een lege string....

Daarbij hoort regel 38 daar ook niet te staan: die moet ná het afsluitende }-teken van de switch komen.
Ivo P op 01/07/2025 20:17:24

Ook om switch heen zou de if geen zin hebben: er is geen case voor een lege string....

Die heb je dan niet nodig:

<?php
if ($c != '') {
switch (strtoupper($c)) {
/* hier de cases */
}
}
?>
Bedankt. Ik vind de php-meldigen echter héél cryptisch.
En als je het vertaald?

syntaxisfout: Onverwachte token "if", verwacht "case" of "default" of "}" in regel 1038
Jan R op 02/07/2025 07:33:04

Bedankt. Ik vind de php-meldigen echter héél cryptisch.


nou, eigenlijk zijn ze bijna altijd vrij duidelijk:

Parse error: syntax error, unexpected token "if", expecting "case" or "default" or "}" in line 1038


Parse Error syntax error: het gaat om de opbouw van de script code (dus niet delen door nul door je invoer of zo)

unexpected token "if": we komen een if-statement tegen die we daar niet verwachten.


expecting "case" or "default" or "}" : hij vertelt ook nog wat er wél had kunnen staan.

in ....: de naam van het bestand waarin deze code staat.

on line 1038: wordt ook nog verteld op weke regel dit optreedt.

Het enige is, dan de line in kwestie soms iets te ver ligt, omdat de werkelijke fout een paar regels eerder staat.
Ook hier: het if-statement an sich is niet fout, maar wel de plek omdat er een regel eerder een switch staat.

Reageren