Hallo Bernd,
offenbar ist dein arraySEP ja nach Start, Pausen und Ende sortiert.
Ich würde - wie immer - zu EVA raten: Erst alles verarbeiten, dann ausgeben.
$i = 0;
$pausen = [];
$pauseGesamt = 0;
foreach ($StartEndePause as $arraySEP) {
$wert = $arraySEP['uss_wert'];
switch ($wert) {
case 'Start':
$start = $arraySEP['uss_inhalt'];
break;
case 'Ende':
$ende = $arraySEP['uss_inhalt'];
break;
case 'Pause':
$pauseGesamt += $arraySEP['uss_inhalt'];
$pausen = '{' . number_format($arraySEP['uss_inhalt'], 2, ',', '') . '}';
break;
}
} ?>
<span class="zeitZeile">Start:</span><?= htmlspecialchars($start) ?> Uhr<br>
<span class="zeitZeile">Pause:</span><?php
if (count($pauseGesamt) > 1) : ?>
<span class="zeitDetail"><?= implode(' ', $pausen) ?></span>
<?php endif ?>
<?= number_format($pauseGesamt, 2, ',', '') . ' Stunde(n)' ?><br>
<span class="zeitZeile">Ende:</span><?= htmlspecialchars($ende) ?> Uhr<br>
Das hat unter anderem den Vorteil, dass die Ausgabereihenfolge nicht davon abhängt, wie die Daten in der DB stehen.
Deine inline-Styles habe ich durch eine class ersetzt, das macht es lesbarer und sowas gehört eh ins Stylesheet. Ob dein Markup mit <span>blabla</span>wert<br> ideal ist, will ich auch bezweifeln, aber hier kein neues Thema aufmachen. Besser wäre z.B.:
<label class="zeitRow"><span>Start:</span><output>17:30 Uhr</output></label>
Und im stylesheet steht dann
label.zeitRow { display: flex; }
label.zeitRow > span:nth-child(1) { flex-basis: 7.4em; }
Dadurch kommen <span> und <output> nebeneinander und jedes <label> auf eine eigene Zeile. Ich habe den span sehr genau selektiert, damit Du damit nicht den zeitDetails-Span triffst.
Den span.zeitDetail
musst Du nun mit geeigneten Mitteln ein- und ausblenden, dann geht der Rest von allein. Ein click-Eventhandler auf dem span, in dem das Wort "Pause" steht, ist nicht geeignet. Spans sind nicht interaktiv.
Rolf
sumpsi - posui - clusi