Nach Umstellung der PHP Version

Dieses:
Code:
    $aktiv = [];
    for ($i = 0; $i < $nr; $i++) {
        $aktiv[$i] = 0;
    }
    for ($j = 0; $j < count($_POST['aktiv']); $j++) {
        $i = $_POST['aktiv'][$j];
        $aktiv[$i] = 1;
    }
verstehe ich ein wenig anders: $_POST['aktiv'][$j] enthält den Wert des value-Attributes der betr. Checkbox. Ich bin nicht in den kompletten Code eingestiegen aber dieser kann auch andere Werte als 0 und 1 annehmen, wahrscheinlich einen Index. Glaube nicht, dass der Fehler hier liegt, auch weil @CreativPur schreibt, dass es vor der Umstellung funktioniert hat.
Moment. Jetzt kapier ich das erst.
die erste schleife läuft von 0 bis Anzahl Wochentage (?) diese nr-Variable.
sagen wir es sind 3 Tage ausgewählt, also läuft die erste schleife von 0 bis 2, und setzt das array aktiv überall auf 0

die zweite schleife läuft von 0 bis Anzahl was? dort holst du nen Wert ab und speicherst in i, was du dann als index für aktiv nimmst.
wenn hier ein wert ausserhalb von 0 bis 2 kommt, knallts
 
Benutze aussagekräftige Variabeln. $j, $i, $nr sagen nix aus.
Und ganz ehrlich. Hört mit den elenden Schleifen auf. PHP bietet viele Array-Funktionen, die genau das machen.

Eine Variante
PHP:
$postArray = [1,4];
$count=5;

//Kompletliste mit negative (0) erstellen
$passiv = array_fill(0, $count, 0);
print_r($passiv);

//Liste mit den $postArray als Indexe und positiv (1) als Wert
$active = array_fill_keys($postArray, 1);
print_r($active);

//Sicherstellen, dass die $active nicht höher ist als $nr
$active = array_slice($active, 0, $nr-1);
print_r($active);

//Bei der Passivliste die Positiven ersetzen
$states = array_replace($passiv, $active);
print_r($states);

//dasselbe Als simpler einzeiler
$states = array_replace(array_fill(0, $nr-1, 0), array_fill_keys($postArray, 1));
Ausgabe
Code:
Array
(
    [0] => 0
    [1] => 0
    [2] => 0
    [3] => 0
    [4] => 0
)
Array
(
    [1] => 1
    [4] => 1
    [7] => 1
)
Array
(
    [1] => 1
    [4] => 1
)
Array
(
    [0] => 0
    [1] => 1
    [2] => 0
    [3] => 0
    [4] => 1
)
 
Zuletzt bearbeitet:
Zurück