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

Hi,

ich habe eine Frage zum Vergleich von Arrays. Ich nutze folgenden, beispielhaften PHP-Code:

$limits = array ( 'AAA'            => 4,
                         'ABC'             => 3,
                         'BCD'             => 8,
                         'fff'                  => 3,);
                    
$array2 = array ('AAA'             => 5,
                          'ABC'             => 2,
                          'BCD'             => 6,);
                 
$limitn = array_intersect_key($limits, $array2);               
if ($limitn < $array2) {redirect...;};

Dabei wird als Ergebnis ausgeworfen, dass $limitn < $array2, obwohl "nur" ein Wert kleiner ist, die anderen beiden sind größer. Wenn ich die Daten wie folgt ändere, ist das Ergebnis gegenteilig.

$limits = array ( 'AAA'              => 4,
                          'ABC'             => 3,
                          'BCD'             => 8,
                          'fff'                  => 3,);
                    
$array2 = array ('AAA'                => 3,
                           'ABC'               => 5,
                           'BCD'               => 9,);

$limitn = array_intersect_key($limits, $array2);               
if ($limitn < $array2) {redirect...;};

In meinem Fragebogen möchte ich aber eigentlich folgende Funktion nutzen: Solange ein Element aus $limitn größer als das Gegenstück in $array2 ist, soll der Fragebogen nicht beendet werden. Mit den unteren Daten würde das passen, mit den oberen aber nicht. Mir geht es dabei um die Quotierung bei der Zusammenarbeit mit einem externen Panel-Anbieter.

Danke vorab und bg

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

1 Answer

0 votes

Die Größer-Kleiner-Operatoren sind bei Arrays nicht sinnvoll anwendbar.

Solange ein Element aus $limitn größer als das Gegenstück in $array2

Dafür benötigen Sie eine kleine Schleife:

$larger = false;
foreach ($array2 as $key => $value) {
  if (!array_key_exists($key, $limits)) {
    continue; // Eintrag ignorieren
  }
  if ($value > $limits[$key]) {
    $larger = true;
  }
}
if ($larger) {
  // Fragebogen nicht beenden
} else {
  // Fragebogen beenden, evtl. redirect() oder goToPage()
}
by SoSci Survey (88.9k points)
Ok, besten Dank!
...