Vielen vielen Dank - diese Hinweise haben das Problem gelöst!
Ich hatte im Code "=" und "==" verwechselt, obwohl ich eigentlich den Unterschied in deren Bedeutung kenne. Ich hätte "=" in der For-Schleife verwenden sollen und "==" in der If-Schleife, statt dasselbe Symbol in der Definition beider Schleifen-Arten.
Außerdem hatte ich die Kurzversion des Codes falsch erstellt, so dass es das zusätzliche Problem zu kurzer Arrays gab (dieses Problem bestand im Ursprungscode nicht). Unten ist eine Version des obigen Beispiels, in dem diese Probleme (denke ich) nicht mehr bestehen und der Output dem entspricht, was ich suchte. Vielen Dank nochmal!
# Beteiligte Variablen
$rand_colors = array("redblue", "red-notblue", "notred-blue", "notred-notblue");
$rand_props = array("prop1", "prop2", "prop3", "prop4");
$redblue = array("red", "blue", "red", "blue");
shuffle($rand_colors);
shuffle($rand_props);
shuffle($redblue);
# Die Schleife
for ($i = 0; $i < 4; $i++) {
$color[$i] = $rand_colors[$i];
$prop[$i] = $rand_props[$i];
for ($j = 0; $j < 8; $j++){
$jar[$i] = $redblue[$i];
if ($jar[$i] == "blue"){
$colors[$i][$j] = "redblue_blue";
}
elseif ($jar[$i] == "red"){
$colors[$i][$j] = "redblue_red";
}
};
};