So vollständigkeithalber hier mal mein aktueller Stand... Senf dazu kann gerne abgelassen werden... Werd es mal dabei belassen soweit.
(Ja... die() gehört sich nicht.. ich mach es trotzdem.. weil ich das mit den exeptions noch nicht durch/verstanden hab und das Ding nur im privaten verwendet wird und ich grad noch am Anfang der Alpha-Test-Phase bin. Und ja das hätte ich mir erspart wenn ich Anfangs vernünftig normalisiert hätte...

)
Vorweg nochmals - mögliche Daten-Logiken/Darstellungen
Code:
Standard
ein Punktewert - eine korrekte Antwort
--------------------------------------
moeglAntw: Huber;Meier;Müller;Strasser
Punkte: 10
richtigeAntw: Huber
MehrRichtige
------------
moeglAntw: Huber;Meier;Müller;Strasser
Punkte: 10
richtigeAntw: Huber;Müller
Individuelle Punkte
-------------------
moeglAntw: Huber;Meier;Müller;Strasser
Punkte: 6;8;5;3
richtigeAntw: Meier
Gemeinsam
---------
moeglAntw: Huber;Meier;Müller;Strasser
Punkte: 6;8;5;3
richtigeAntw: Meier;Strasser
Funktionen:
Diese hier macht jetzt das gem. Threadtitel.
PHP-Code:
// ------------------------------------------------------------------------------
// Aus zwei csv-Strings einen key => values Array erstellen
// ------------------------------------------------------------------------------
function combineStringsToArray($strKeys, $strValues, $autoFill = true) {
$arrKeys = explode(";", $strKeys);
$arrValues = explode(";", $strValues);
$countKeys = count($arrKeys);
$countValues = count($arrValues);
// wenn Anzahl ident Array zurückgeben
if ($countKeys === $countValues) {
return array_combine($arrKeys, $arrValues);
}
// nur ein Wert in $arrValues (Punktewert) vorhanden
if ($countValues === 1 && $autoFill) {
// alle Elemente mit dem einen Wert auffüllen
$arrValues = array_fill(0, $countKeys, $arrValues[0]);
return array_combine($arrKeys, $arrValues);
}
// alles andere ist nicht erlaubt
die(
"<code><b>Fehler in createPairsArray()<br> <br>Anzahl Keys (".$countKeys.")
und Values (".$countValues.") stimmen nicht überein!</b><br>
<b>Keys:</b> ".$strKeys."<br><b>Values:</b> ".$strValues."</code>"
);
}
Jo.. siehe kommentare in der Func. Damit "finde" ich die Punkte zu den "richtigeAntwort" Inhalten.
PHP-Code:
// ------------------------------------------------------------------------------
// Werte (Values) in Array A aus Basis-Array B ergänzen
// ------------------------------------------------------------------------------
function getArrayValuesToKeys($arrToComplete, $arrBase) {
// In: $arrToComplete = array("Hans", "Robert");
// $arrBase = array("Hans" => 10, "Franz" => 8, "Robert" => 7, "Hias" => 4);
// Out: Array: Hans => 10, Robert => 7
$arrOutput = array_intersect_key($arrBase, array_flip($arrToComplete));
// es muss alles gefunden werden!
if (count($arrOutput) <> count($arrToComplete)) {
die('
<p>Fehler in addValuesToArray()...
$arrOutput und $arrToComplete - Anzahl nicht ident!</p>
');
}
return $arrOutput;
}
Die erstellt zuletzt noch einen String für die Ausgabe in der Seite dann
PHP-Code:
// ------------------------------------------------------------------------------
// String aus Key => Value Array erstellen
// ------------------------------------------------------------------------------
function createKeyValueStrFromArray($input_Arr,
$lineSeperator = ", ",
$tagOpen = " [", $tagClose = "] ") {
$output = "";
foreach ($input_Arr as $key => $val) {
$output .= $key . $tagOpen . $val . $tagClose . $lineSeperator;
}
return substr($output, 0, - strlen($lineSeperator));
}
LG