Vielen Dank für Ihre schnelle Rückmeldung.
Der dargestellte Code auf der betreffenden Fragebogenseite (Seite 54) war nahezu vollständig. Ich hatte lediglich Teile der if-Bedingung und die letzten beiden Zeilen ausgespart, um es kürzer zu halten. Nun der gesamte Code mit einigen Aussparungen.
Die Meldung "Undefined offset: 424" bedeutet, dass es in der Variable $expchce keinen Eintrag mit dem Index 424 gibt.
Die if-Bedingung berücksichtigt Indizes von 1 bis 432 (siehe unten, teile ausgespart). Der Eintrag 424 ist also im Code bedacht, wird aber nicht abgerufen. Das Problem dürfte woanders liegen. Ich habe den Code mehrmals getestet. Die Befehle funktionieren für den ersten Block der if-Bedingung (also für die Elemente 0 bis 80). Bei den restlichen Blocks taucht die o.g. Fehlermeldung auf. Eine Fehlermeldung bzgl. der if-Schleife (z.B. zu wenige Klammern) liegt nicht vor.
urnDraw('urne_vignetten', 'IN21');
$arrayid=(value('IN21_01'));
registerVariable($arrayid);
if ((value('IN21_01')>=0) & (value('IN21_01')<=80)) {
$expchce = array(
'1,0,0,0,0,0,0,0',
'2,0,0,0,0,0,0,1',
: Ausgespart
: Ausgespart
'80,0,1,1,0,1,1,1',
'81,0,1,1,1,0,0,0',);
} elseif (((value('IN21_01'))>=81) & (((value('IN21_01'))<=160))) {
$expchce = array(
'82,0,1,1,1,0,0,1',
'83,0,1,1,1,0,1,0',
: Ausgespart
: Ausgespart
'160,1,0,0,1,1,1,1',
'161,1,0,0,2,0,0,0',);
} elseif (((value('IN21_01'))>=161) & (((value('IN21_01'))<=240))) {
$expchce = array(
'162,1,0,0,2,0,0,1',
'163,1,0,0,2,0,1,0',
: Ausgespart
: Ausgespart
'240,1,1,1,2,1,1,1',
'241,1,2,0,0,0,0,0',);
} elseif (((value('IN21_01'))>=241) & (((value('IN21_01'))<=320))) {
$expchce = array(
'322,2,0,1,1,0,0,1',
'323,2,0,1,1,0,1,0',
: Ausgespart
: Ausgespart
'400,2,2,0,1,1,1,1',
'401,2,2,0,2,0,0,0',);
} elseif ((value('IN21_01')>=401) & (value('IN21_01')<=431)) {
$expchce = array(
'402,2,2,0,2,0,0,1',
'403,2,2,0,2,0,1,0',
: Ausgespart
: Ausgespart
'431,2,2,1,2,1,1,0',
'432,2,2,1,2,1,1,1',
);
}
registerVariable($expchce);
$gezeigtechoicevignettestringarray = $expchce[$arrayid];
registerVariable('gezeigtechoicevignettestringarray');
$gezeigtechoicevignette= explode(",", $gezeigtechoicevignettestringarray);
registerVariable('gezeigtechoicevignette');
Das Problem ist weniger das Array, als vielmehr, dass Sie es mittels registerVariable() im Datensatz speichern möchten.
Wenn ich bei der Definition des Arrays $expchce auf die if-Bedingungen verzichte und den Befehl `registerVariable($expchce); auskommentiere ...
$expchce = array(
'1,0,0,0,0,0,0,0',
'2,0,0,0,0,0,0,1',
: Ausgespart
: Ausgespart
'431,2,2,1,2,1,1,0',
'432,2,2,1,2,1,1,1',
);
//registerVariable($expchce);
... erhalte ich folgende Fehlermeldung:
`
Vielleicht möchten Sie den Kontext Ihres Codes ein wenig genauer erläutern?
Auf der nächsten Fragebogenseite verwende ich die Variable $gezeigtechoicevignette, um die Elemente des Arrays für eine Vignette auszulesen.
$arrayid = $gezeigtechoicevignette [0];
$w_unt = $gezeigtechoicevignette [1];
$w_zhl = $gezeigtechoicevignette [2];
$w_or = $gezeigtechoicevignette [3];
$w_en = $gezeigtechoicevignette [4];
$w_ho = $gezeigtechoicevignette [5];
$w_tar = $gezeigtechoicevignette [6];
$w_std = $gezeigtechoicevignette [7];
registerVariable('arrayid');
registerVariable('w_unt');
registerVariable('w_zhl');
registerVariable('w_or');
registerVariable('w_en');
registerVariable('w_ho');
registerVariable('w_tar');
registerVariable('w_std');
Anschließend werden die numerischen Ausprägungen verbalisiert und in einer Vignette dargestellt. Wie oben erwähnt funktioniert der gesamte Code für die Elemente 0 bis 80 des Arrays $expchce und mir wird keine Fehlermeldung bzgl. der if-Schleife angezeigt.
Was kann hier das Problem bzw. die Lösung sein?