0 votes
in SoSci Survey (dt.) by s109993 (10.2k points)

Guten Morgen,

eine wahrscheinlich etwas simplere Frage:

Ich würde gerne Werte der Größe nach in verschiedene Platzhalter nehmen.

Das ist der Ausgangspunkt. Mit diesem Code wird das Alter, welches in Feld A013_01 eingetragen wird, automatisch Kind 1 zugeordnet.

replace('%age_kind1%', 'A013_01', 'response');
replace('%age_kind2%', 'A013_02', 'response');
replace('%age_kind3%', 'A013_03', 'response');

Was passiert aber, wenn die Kinder nicht dem Alter aufsteigend eingetragen werden?
Deshalb würde ich gerne in den Platzhalter %age_kind1%, den kleinsten Wert von A013_01 bis A013_03 eintragen. Für %age_kind2% den zweitkleinsten und so weiter. Meine Überlegung war bisher folgende:

//Ich lege die Werte in ein Array ab

$Kind = array(
1=> value('A013_01'),
2=> value('A013_02'),
3=> value('A013_03')
);

//Sortiere den Array aufsteigend

asort($Kind);

//nehme für das jüngste Kind das erste Element des Arrays

replace('%age_kind1%', '$Kind[1]', 'response');
replace('%age_kind2%', '$Kind[2]', 'response');
replace('%age_kind3%', '$Kind[3]', 'response');

Allerdings habe ich die Befürchtung das im replace Befehl an zweiter Stelle ein Fragecode stehen muss!?

Fehlermeldung: Die Variable $Kind[1] gibt es in diesem Projekt nicht
(siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür
ermittelt werden.

Für Korrekturen oder anderere Wege wäre ich wie immer dankbar!

1 Answer

+1 vote
by SoSci Survey (305k points)
selected by s109993
 
Best answer

Vorab der Hinweis, dass Sie sich mit dem Umsortieren Ärger für die Auswertung machen können. Denn dann passen die Daten aus A013 nicht mehr uneingeschränkt zu den Daten in späteren Fragen.

Ihr Code ist schon fast korrekt, es sid nur zwei Kleinigkeiten:

  1. Die Zählung in Arrays beginnt mit 0, nicht mit 1 und
  2. Wenn Sie die Antwort schon mit value() abgerufen haben, verwenden Sie das "response" bitte nicht mehr bei replace(). Außerdem darf der Variablenname nicht in Anführungszeichen stehen.

Der PHP-Code würde dann wie folgt aussehen:

replace('%age_kind1%', $Kind[0]);
replace('%age_kind2%', $Kind[1]);
replace('%age_kind3%', $Kind[2]);
by s109993 (10.2k points)
Da aber erst umsortiert wird nachdem das Alter eingetragen wird und diese dann nur noch als Platzhalter für verschiedene Fragen verwendet wird, sollte es bei der Auswertung keine Probleme geben- oder sehe ich das falsch?
by SoSci Survey (305k points)
Wenn Sie außer dem Alter "vorne" nichts abfragen, sollte alles passen. Aber speichern Sie das Alter (wie abgefragt) nochmal in passende interne Variablen, also z.B.

put('IV01_01', $Kind[0]);
put('IV01_02', $Kind[1]);
put('IV01_03', $Kind[2]);

Nicht, dass bei der Auswertung dann Zweifel aufkommen, welches Alter nun für welche Folgefrage/-variable angezeigt wurde.

Nur zur Sicherheit: Sie haben im Fragebogen schon mehr als 3 Kinder vorgesehen bzw. erklären, welche Kinder man in dem Fall angeben soll, ja?
by s109993 (10.2k points)
Das ist eine gute Idee. Ja, wird die Gesamtzahl der Kinder abgefragt. Das Alter bezieht sich aber nur auf die im Haushalt lebenden Kinder- auch wenn es mehr als drei Kinder sind wird für maximal drei Kinder das Alter abgefragt. Die Anweisung betont auch, das mit dem jüngsten Kind angefangen werden soll. Falls das so geschieht, hätten die einfachen Platzhalter gereicht. Aber ich gehe davon aus, das viele Teilnehmer die Anweisung nicht lesen bzw. folgen werden.

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

...