Ich denke, das Problem könnte sein, dass Sie das () nicht durch media = part entgehen konnten - auch Sie hätten "anstelle von" verwendet, da "() nicht als PHP-Struktur, sondern als Textdaten interpretiert worden wäre.
Ich weiß nicht warum, aber für mich ist es viel besser lesbar, wenn ich es so schreibe:
<?php foreach ($type as $pictData['types']) { echo "<source media='(min-width: ".$size."px)'"; echo "sizes=''"; echo "srcset='".$pictData['names'][$type][$size]."'"; echo "type='".$type."'>"; } ?>
Sie sollten auch die Foreach-Reihe betrachten. Ich denke, es sollte umgekehrt sein:
foreach ($pictData['types'] as $type) {
anstatt ...
foreach ($type as $pictData['types']) {