0 votes
in SoSci Survey (dt.) by s273366 (160 points)

Hallo,

ich bin der hier erklärten Anleitung gefolgt und habe mehrere Items aus
unterschiedlichen Fragen gemischt und in einem Array gespeichert, der
pro Zeile zwei Einträge hat, die Frage-Kennung und Item-Nummer enthalten (siehe Bild).

Diesen Array möchte ich nun um weitere Einträge, also weitere Items ergänzen, finde
aber nicht den passenden Befehl, mit dem die vorhandene Array Struktur erhalten bleibt.
Können Sie mir weiterhelfen?

Danke!

by SoSci Survey (328k points)
> Diesen Array möchte ich nun um weitere Einträge, also weitere Items ergänzen

Könnten Sie spezifizieren, wo genau Sie was genau ergänzen möchten? Dass Sie weitere Zeilen ins Array schreiben können, ist Ihnen höchstwahrscheinlich klar, deshalb vermute ich, Sie möchten etwas anders machen.
by s273366 (160 points)
ich möchte weitere Items aus einer anderen Frage ergänzen, also jeweils eine Fragen- (PS01) und Item-Kennung (01) in eine Zeile
by SoSci Survey (328k points)
Sie können das einfach als weitere Zeilen ins Array schreiben - also z.B.

  ...
  ['AB03', 2],
  ['AB03', 3],  // hier das Komma nicht vergessen
  ['PS01', 1]
];

Meinen Sie das?
by s273366 (160 points)
theoretisch ja - allerdings funktioniert das (meines Wissens) in meinem Fall nicht so einfach, weil ich meinen Array nicht händisch aufgeschrieben, sondern mit einer foreach-Schleife festgelegt habe. Der Code lautet dabei wiefolgt:

if (!isset($itemBlocks)) {
  $questions = ['PS01', 'PS02', 'PS03', 'PS04', 'PS05', 'PS06', 'PS07', 'PS08',
                'PS09', 'PS10', 'PS11', 'PS12', 'PS13', 'PS14', 'PS15', 'PS16',
                'PS17', 'PS18', 'PS19', 'PS20', 'PS21', 'PS22', 'PS23'];
  // Liste mit allen Items erstellen
  $items = [];
  foreach ($questions as $qstID) {
    $qstItems = getItems($qstID, 'all');
    foreach ($qstItems as $itemID) {
      $items[] = [$qstID, $itemID];
    }
  }
  // Liste mischen
  shuffle($items);

// Liste teilen
$items_t1 = array_slice($items, 0, 100);
$items_t2 = array_slice($items, 100, 200);

registerVariable($items_t1);
registerVariable($items_t2);

...nun würde ich gerne jeweils an items_t1 und $items_t2 noch weitere Zeilen anhängen. Kann ich das so einfach machen, wie Sie beschrieben haben?

1 Answer

0 votes
by SoSci Survey (328k points)
selected by s273366
 
Best answer

nun würde ich gerne jeweils an items_t1 und $items_t2 noch weitere Zeilen anhängen.

Danke für die Konkretisierung, jetz ergibt das Ganze für mich mehr Sinn :)

Hier eine mögliche Lösung:

$items_t1 = array_slice($items, 0, 100);
$items_t2 = array_slice($items, 100, 200);

$items_t1[] = ['PS01', 1];
$items_t1[] = ['PS01', 2];
$items_t1[] = ['PS01', 3];

$items_t2[] = ['PS01', 4];
$items_t3[] = ['PS01', 5];
$items_t4[] = ['PS01', 6];

Oder wenn es mehr Items sind, vielleicht etwas eleganter

$items_t1 = array_merge(
    array_slice($items, 0, 100),
    [
        ['PS01', 1],
        ['PS01', 2],
        ['PS01', 3]
    ]
);
by s273366 (160 points)
Super, jetzt funktioniert es - danke!

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

...