0 votes
in SoSci Survey (dt.) by s014016 (360 points)

Hallo,

ich habe ein Array aus verschiedenen Fragen erstellt.
Die Werte der Fragen des Arrays sollen unter einer bestimmten Bedingung zurückgesetzt werden.
Es werden allerdings nur die ersten beiden Fragen des Array zurückgesetzt, die anderen ignoriert, d.h. die Werte bleiben darin bestehen.
Ich habe schon ziemlich viel rumprobiert, aber das Ergebnis ist immer das Gleiche.
Vielleicht können Sie helfen?

Hier der Code:

$NQ=array('NQ1','NQ2','NQ3','NQ4','NQ5','NQ6','NQ7','NQ8','NQ9','NQ10','NQ11',
       'NQ12','NQ13','NQ14','NQ15','NQ16','NQ17','NQ18','NQ19','NQ20');

 for ($j=0; $j<count($NQ); $j++)  {
    if ($NQ[$j]>1){
       unset($NQ[$j]); 
   } 

Dann habe ich auch noch folgenden Code probiert:

foreach ($NQ as $j => $value) {
                  $NQ[$j] =NULL;
  }

1 Answer

0 votes
by SoSci Survey (305k points)

Sie machen das unset() von folgender Bedingung abhängig:

if ($NQ[$j]>1){

Nun ist aber jedes Element des Arrays ein Text und damit wahrscheinlich größer als 1. Meinen Sie vielleicht (value($NQ[$j])>1)?

Ich denke, dass es nciht am unset() scheitert. Vielmehr denke ich, dass der Filter nicht das tut, was Sie erwarten. Fügen Sie ein debug() ein, um die Funktion zu prüfen:

debug($NQ[$j]);
unset($NQ[$j]); 
debug($NQ);

Beachten Sie auch, dass sie die Länge des Arrays durch ein unset() ändert. Wenn Sie also das erste Element aus dem Array geworfen haben ($j=0), dann sieht das Array wie folgt aus:

['NQ2','NQ3','NQ4','NQ5','NQ6','NQ7','NQ8','NQ9','NQ10','NQ11','NQ12','NQ13','NQ14','NQ15','NQ16','NQ17','NQ18','NQ19','NQ20']

Wenn Sie nun $j=1 löschen, dann wird NQ3 entfernt, es bleibt also

['NQ2','NQ4','NQ5','NQ6','NQ7','NQ8','NQ9','NQ10','NQ11','NQ12','NQ13','NQ14','NQ15','NQ16','NQ17','NQ18','NQ19','NQ20']

Kurzum würde Ihr Code alle ungeraden Einträge löschen und ab der Hälfte nichts mehr löschen.

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

...