Es gibt dafür unterschiedliche Herangehensweisen. Wenn es mehr als 2-3 Situationen sind, würde ich eine Multi-Level-Struktur empfehlen. Da könnten Sie dann die Rotation auf der oberen Ebene und auf der unteren Ebene getrennt programmieren.
Die Alternative, wenn Sie in einem Daten-Fall bleiben möchten, wäre, dass Sie zu Beginn ein Array erstellen, welches die Objekte in geeigneter Weise rotiert. Ausgangspunkt wäre dann die Anleitung Seiten innerhalb der Blöcke rotieren. Dabei würden Sie erstmal die Fragen (in Blöcken) rotieren - ich gehe mal davon aus, dass Sie eine Frage pro Seite haben, dann würden Sie die Seite mit der Situation mittels array_unshift()
vor jeden Block packen. Und zuletzt würden sie die Blöcke selbst rotieren.
Eine Erklärung, die hier weiter ausholt finden Sie unter Komplexe Rotationen
Detailfragen dann gerne wieder hier :)