Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

0 votes

Liebes Forum,

ich habe immer noch Probleme mit meiner array in array Programmierung. Im Folgenden zeige ich den Code und die Ergebnisse des Codes samt Fehlermeldungen. Aus den Fehlermeldungen geht hervor, dass der Fehler "Undefined offset: 2" willkürlich auftritt.

Hier zunächst der Code, den ich auf drei Fragebogenseiten (S.74 bis S.76) gesplittet habe:

<!-- Seite 74 -->
<page ident="Choice1" intID="385">
<info>Designziehung</info>
<php intID="395"><![CDATA[
urnDraw('urne_z', 'IN21');
$arrayid = value('IN21_01'); 
registerVariable($arrayid);
]]></php>
<php intID="391"><![CDATA[

$expchce = array(
'1,1,1,1,1',
'2,1,1,1,2',
'3,1,1,2,1',
'4,1,1,2,2',
'5,1,2,1,1',
'6,1,2,1,2',
'7,1,2,2,1',
'8,1,2,2,2',
'9,1,3,1,1',
'10,1,3,1,2',
'11,1,3,2,1',
'12,1,3,2,2',
'13,2,1,1,1',
'14,2,1,1,2',
'15,2,1,2,1',
'16,2,1,2,2',
'17,2,2,1,1',
'18,2,2,1,2',
'19,2,2,2,1',
'20,2,2,2,2',
'21,2,3,1,1',
'22,2,3,1,2',
'23,2,3,2,1',
'24,2,3,2,2',
'25,3,1,1,1',
'26,3,1,1,2',
'27,3,1,2,1',
'28,3,1,2,2',
'29,3,2,1,1',
'30,3,2,1,2',
'31,3,2,2,1',
'32,3,2,2,2',
'33,3,3,1,1',
'34,3,3,1,2',
'35,3,3,2,1',
'36,3,3,2,2',
);

registerVariable($expchce);
]]></php>
<php intID="380"><![CDATA[
$gezeigterarray = $expchce [$arrayid]; 
registerVariable('gezeigterarray');

$gezeigterarrayaufgespalten = explode(",", $gezeigterarray);
registerVariable('gezeigterarrayaufgespalten');
]]></php>
</page>


<!-- Seite 75 -->
<page ident="Choice2" intID="384">
<php intID="388"><![CDATA[
// Wert des Arrays abrufen:

$arrayid = $gezeigterarrayaufgespalten [0]; 
$w_dim1level = $gezeigterarrayaufgespalten [1];
$w_dim2level = $gezeigterarrayaufgespalten [2];
$w_dim3level = $gezeigterarrayaufgespalten [2]; // Konstante
$w_dim4level = $gezeigterarrayaufgespalten [3];
$w_dim5level = $gezeigterarrayaufgespalten [4];

registerVariable('w_dim1level');
registerVariable('w_dim2level');
registerVariable('w_dim3level');
registerVariable('w_dim4level');
registerVariable('w_dim5level');
]]></php>
<php intID="396"><![CDATA[
// Dann als Texte kodieren:
$t_dim1level = array('dim1level A', 'dim1level B', 'dim1level C'); 
$t_dim2level = array('dim2level A', 'dim2level B', 'dim2level C'); 
$t_dim3level = array('dim3level A', 'dim3level B', 'dim3level C'); 
$t_dim4level = array('dim4level A', 'dim4level B'); 
$t_dim5level = array('dim5level A', 'dim5level B');

registerVariable('t_dim1level');
registerVariable('t_dim2level');
registerVariable('t_dim3level');
registerVariable('t_dim4level');
registerVariable('t_dim5level');
]]></php>
</page>


<!-- Seite 76 -->
<page ident="Choice3" intID="376">
<php intID="382"><![CDATA[
$dim1level= $t_dim1level [$w_dim1level];
$dim2levelchoice= $t_dim2level [$w_dim2level];
$dim4level= $t_dim4level [$w_dim4level];
$dim5level = $t_dim5level [$w_dim5level];
$dim3level = $t_dim3level [$w_dim3level];


registerVariable('dim1level');
registerVariable('dim2levelchoice');
registerVariable('dim4level');
registerVariable('dim5level');
registerVariable('dim3level');
]]></php>
<php intID="378"><![CDATA[
///////////////////////////////////////////////////////
// Angezeigte Tabelle

html('
<p>


<table width=65% height=100 align="center"; style="border:solid medium;border-color:#96C2D4">

<tr> 
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 10px; padding-bottom: 10px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
<b>Faktor 1</b>:
</td>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
'.$dim1level.'
</td>
</tr>

<tr>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
<b>Faktor 2</b>:
</td>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
'.$dim2levelchoice.'
</td>
</tr>

<tr>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
<b>Faktor 3</b>:
</td>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
'.$dim3level.'
</td>
</tr>

<tr>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
<b>Faktor 4</b>:
</td>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
'.$dim4level.'
</td>
</tr>


<tr>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
<b>Faktor 5 </b>:
</td>
<td font size="2" colspan="5" align="left" valign="top" style="padding-top: 5px; padding-bottom: 5px; padding-left: 10px; padding-right: 10px">
<p align="left"><p style="font-size: 10.4pt;" padding-left: 20px;>
'.$dim5level.'
</td>
</tr>

</table>

');
]]></php>
</page>

Der Code funktioniert insofern, als ich mir die Werte von $gezeigterarrayaufgespalten anzeigen lassen kann, z.B. über:

html('<p>Eintrag mit Index 0 (arrayid): '.$gezeigterarrayaufgespalten[0].'</p>');
html('<p>Eintrag mit Index 1: '.$gezeigterarrayaufgespalten[1].'</p>');
html('<p>Eintrag mit Index 2: '.$gezeigterarrayaufgespalten[2].'</p>');

Wenn es aber darum geht die Werte in der Tabelle auf Seite 76 anzeigen zu lassen, zeigt sich folgendes Problem:
Ich erhalte fast immer die Fehlermeldung "undefined offset". Rufe ich den Fragebogen wiederholt auf, erscheint die Fehlermeldung allerdings bei verschiedenen Variablen, wie die folgenden Bilder verdeutlichen. An dem Code kann es dann m.E. nicht liegen, weil jede Variable mal funktionier (und mal nicht).

Was ist der Grund hierfür? Für Eure Hlfe wäre ich Euch sehr verbunden.

Danke im Voraus!

Hier funktioniert es ausnahmsweise:

Hier gibt es eine Fehlermeldung:

Hier gibt es auch eine Fehlermeldung:

Hier gibt es auch eine Fehlermeldung:

in SoSci Survey (dt.) by s010182 (155 points)

1 Answer

+1 vote

Womöglich ist das Problem ganz einfach... Was für Werte stehen denn in $gezeigterarrayaufgespalten ? Oder genauer gefragt: Zählen Sie die Stimulus-Varianten ab 0 (also 0,1,2) oder ab 1 (1,2,3)? Arrays zählen nämlich immer ab dem Index 0 - entsprechend reicht vielleicht schon folgende Modifikation auf Seite 76.

$dim1level= $t_dim1level [$w_dim1level - 1];
$dim2levelchoice= $t_dim2level [$w_dim2level - 1];
$dim4level= $t_dim4level [$w_dim4level - 1];
$dim5level = $t_dim5level [$w_dim5level - 1];
$dim3level = $t_dim3level [$w_dim3level - 1];
by SoSci Survey (79.6k points)
Okay. Das war genau das Problem. Und nun, wo ich die Lösung sehe, ist das ganze vollkommen plausibel für mich. Daran habe ich nicht gedacht. Vielen Dank.
...