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

Hallo,

ich stehe vor folgendem Problem. Es gab dazu schon ein paar Diskussionen hier im Forum, aber die Fragestellung hat sich nun nochmal leicht geändert und die letzten Hinweise haben nicht zur Lösung geführt.

Zur Ausgangslage: Es geht um die Quotierung für die Zusammenarbeit mit einem Panel-Anbieter. Es existiert ein Array $limits, dass die Quotierung in folgender Form vorgibt.

'$limits = array(
'Marke A' => 10
'Marke B' => 10
usw. hier sind 120 Marken enthalten)'

Über eine Schleife wird die Anzahl der Abfragen erhoben, die für die jeweilige Marke bereits getätigt wurden. Dort sind zwischen einer und fünf Marken enthalten.

'$counts = array(
'Marke A' => 2
'Marke B' => 4
usw., hier sind max. fünf Marken)'

Nun sind die Voraussetzungen für das Beenden des Fragebogens aber je nach Marke verschieden, so dass eine Schleife für mich nicht funktioniert.

Bei einer Marke im Array $counts soll nach erreichen des Limits gestoppt werden. Bei zwei bis fünf Marken soll mit der Befragung fortgefahren werden, solange eine der Marken noch unter dem Limit ist.
Es besteht sonst die Gefahr, dass bestimmte Marken darunter leiden, wenn andere sehr schnell aufgefüllt sind und dann zu wenig Teilnehmer abbekommen.

Ich habe bereits versucht, das Problem mit mehreren Ansätzen zu lösen, komme allerdings zu keinem Ergebnis.

Gibt es hierfür eine elegante Lösung?

Herzlichen Dank vorab
Felix

in SoSci Survey (dt.) by s117257 (175 points)

1 Answer

0 votes

solange eine der Marken noch unter dem Limit ist.

Sie hatten ja in einer anderen Frage schon eine hübsche Schleife dafür gebaut. Sie müssen lediglich die Abbruchbedingung entsprechend definieren:

$anyBelow = false;
foreach ($counts as $marke => $count) {
  if ($count < $limits[$marke]) {
    $anyBelow = true;
  }
}
if (!$anyBelow) {
  // Abbruch
  redirect(...);
}
by SoSci Survey (130k points)
Da haben Sie Recht - funktioniert. Danke!
...