Lieber Henry,
Du machst es zu kompliziert. Das führt nur zu neuen Problemen.
Im Browser willst Du etwas anzeigen. Das besteht im Wesentlichen aus einem Namen (steht bei Dir in plcvarname), einem Wert (actvalue) und einer Einheit (unit). Die Website sollte es nicht kümmern, wie die Daten in der Datenbank abgelegt werden. Sie sollte die Daten bereits so ausgespielt bekommen, dass sie diese ideal anzeigen kann (siehe meine Antwort auf Rolfs Antwort).
$json_data = [];
foreach ($db_daten as $row) {
$json_data[$row['plcvarname']] = [
'unit' => $row['unit'],
'value' => $row['actvalue']
];
}
echo json_encode($json_data);
In der Foreach-Schleife wird das Array $json_data bei jedem Durchlauf mit einem neuen Wert befüllt, der seinerseits ein Array ist. Der Schlüssel, unter dem dieses neue Array in $json_data abgespeichert wird, ist der Wert in der DB-Spalte plcvarname. Jedes dieser neuen Arrays hat nur zwei Werte, die mit den Schlüsseln unit und value hinterlegt werden. Damit erhältst Du ein Array, dessen Werte nicht nach numerischen Schlüsseln abgelegt sind, sondern unter echten Namen. Gleiches gilt für die Arrays in den Werten. Das macht ihre Auswertung mit JavaScript später sehr günstig.
Liebe Grüße
Felix Riesterer