Fehler im Script nach Update

Hallo,

seit irgendeinem Update (welches kann ich nicht sagen) häufen sich meine Probleme mit einzelnen Skripten die schon seit Jahren laufen.

z. b.

//Zu überwachende Statusvariablen gefolgt von der Bezeichnung die der Link enthalten soll

$FArray=array(array(57850,"WZ F"),

      array(55670,"AZ"),

      array(39108,"Eingang"),

      array(55148,"Küche-N"),

      array(52769,"Küche-S"),

      array(29454,"WK Jal"),

      array(32686,"Hobby Horn Tür"),

      array(25507,"Hobby Tür")

      );

// Ordner an dem die Links abgelegt werden.

// Derzeit im gleichen Verzeichnis wie dieses Skript!!

$LinkOrdnerID=IPS_GetParent($IPS_SELF);

//######################################

//Ereignis zum Skriptaufrufen anlegen

//######################################


foreach ($FArray as $id){
    if($id[0]['VariableType'] == '0'){
       //Ereignis zum Skriptaufrufen anlegen
       if(@IPS_GetEventIDByName('Event '.$id[0], $IPS_SELF) === false){
          $ereignis = IPS_CreateEvent(0);
          IPS_SetEventTrigger($ereignis, 1, $id[0]);
          IPS_SetEventTriggerValue($ereignis, true);
          IPS_SetEventTriggerSubsequentExecution($ereignis, false);
          IPS_SetParent($ereignis, $IPS_SELF);
          IPS_SetName($ereignis, 'Event '.$id[0]);
          IPS_SetEventActive($ereignis, true);
        }
    }
}

Ich bekomme den Fehler
Notice: Trying to access array offset on value of type int in C:\ProgramData\Symcon\scripts\32134.ips.php on line 33

Zeile 33 ist

	if($id[0]['VariableType'] == '0'){

Ich bin mir sicher das die Experten unter Euch mit den Augen rollen und mir sagen das ich das mit der Suchfunktion leicht finden kann. Mir fehlt nur der Ansatz wonach ich suchen soll.
Ich bin mir nicht mal mehr sicher warum ich diese Abfrage seinerzeit eingefügt habe.
Über eine Hinweis wie ich das wieder zum laufen bekomme würde ich mich sehr freuen.

Gruß aus Berlin

Hallo
Ich denke das sollte eigentlich so heissen.

    $var = IPS_GetVariable($id[0]);
    $type = $var['VariableType'];
    if($type == 0)

Danke!!

mit

  if(IPS_GetVariable($id[0])['VariableType'] == 0){ 

anstelle von

if($id[0]['VariableType'] == 0){

geht es.
Hat sich da was in letzter Zeit geändert? ich bin mir zu 99% sicher, das das Scrip Jahrelang in der kurzen Version fehlerfrei lief.

Hallo
In der Doku steht dazu

VariableType (ab 4.0)	integer	Enthält den Variablentyp (0: Boolean, 1: Integer, 2: Float, 3: String)

ab Version 4.0. Vielleicht alte Version irgendwann rausgenommen.

'0' ist ein String (durch die Hochkommas deklariert) !  Erwartet wird ein Integer ( 0 )!

Gruß
lueralba

Das kann nicht sein, da in deinem Script nirgendwo die Daten der Variable mit IPS_GetVariable geholt wurden.
Dein Script hat direkt versucht auf VariableType zuzugreifen. Diesen Index hat dein $FArray aber gar nicht. Somit kann es auch vorher nicht funktioniert haben.
@lueralba Das ist egal. Der String 0 wird dann als Zahl angenommenen. Nur bei drei Gleichzeichen ist die Abfrage false.
Einen Fehler wird dadurch aber nicht geworfen.
Michael