2016-11-10 1 views
2

Ich entwerfe gerade ein Programm, das einen Revisionszeitplan für Studenten erstellt. Ich versuche, eine Funktion zu erstellen, die durch ein 2D-Array geht und Subjekte in einen zufälligen Platz in diesem Array einfügt, dh Mathematik in Slot 12 am Montag, dann geht es zum nächsten Tag. Ich habe beide Fächer mit zugewiesener Stundenzahl Woche als Variablen von einer vorherigen Seite Ich brauche nur Hilfe bei der Auswahl jedes Array innerhalb des Haupt-Array. Hier ist mein 2darray, bedenkt ive enthielt nur die ersten drei Reihen Platz zu sparen sogar tho es 7.enWie foreach verwenden, um Werte in jedes Array innerhalb eines Arrays hinzuzufügen?

$Timetable = array(
"0" => array  // 0 = Monday 6= Sunday 
        // 0 - 24 = horus 
(
    "0" => "", 
    "1" => "", 
    "2" => "", 
    "3" => "", 
    "4" => "", 
    "5" => "", 
    "6" => "", 
    "7" => "", 
    "8" => "", 
    "9" => "", 
    "10" => "", 
    "11" => "", 
    "12" => "", 
    "13" => "", 
    "14" => "", 
    "15" => "", 
    "16" => "", 
    "17" => "", 
    "18" => "", 
    "19" => "", 
    "20" => "", 
    "21" => "", 
    "22" => "", 
    "23" => "", 
    "24" => "", 
), 
"1" => array 
(
    "0" => "", 
    "1" => "", 
    "2" => "", 
    "3" => "", 
    "4" => "", 
    "5" => "", 
    "6" => "", 
    "7" => "", 
    "8" => "", 
    "9" => "", 
    "10" => "", 
    "11" => "", 
    "12" => "", 
    "13" => "", 
    "14" => "", 
    "15" => "", 
    "16" => "", 
    "17" => "", 
    "18" => "", 
    "19" => "", 
    "20" => "", 
    "21" => "", 
    "22" => "", 
    "23" => "", 
    "24" => "", 
), 
"2" => array 
(
    "0" => "", 
    "1" => "", 
    "2" => "", 
    "3" => "", 
    "4" => "", 
    "5" => "", 
    "6" => "", 
    "7" => "", 
    "8" => "", 
    "9" => "", 
    "10" => "", 
    "11" => "", 
    "12" => "", 
    "13" => "", 
    "14" => "", 
    "15" => "", 
    "16" => "", 
    "17" => "", 
    "18" => "", 
    "19" => "", 
    "20" => "", 
    "21" => "", 
    "22" => "", 
    "23" => "", 
    "24" => "", 
), 
); 

Das erwartete Ergebnis ist, die Tabelle mit den Werten der Benutzer gesteckt, zum Beispiel, wenn der Benutzer gefüllt ist hatte für 4 Stunden Mathematik für 6 Stunden eingegeben und Biologie für 2 könnte das Array in etwa so aussehen.

'$'Timetable = array(
"0" => array  // 0 = Monday 6= Sunday 
        // 0 - 24 = horus 
(
    "0" => "", 
    "1" => "", 
    "2" => "", 
    "3" => "english", 
    "4" => "", 
    "5" => "", 
    "6" => "", 
    "7" => "maths", 
    "8" => "", 
    "9" => "biology", 
    "10" => "", 
    "11" => "english", 
    "12" => "", 
    "13" => "", 
    "14" => "", 
    "15" => "", 
    "16" => "", 
    "17" => "", 
    "18" => "", 
    "19" => "", 
    "20" => "", 
    "21" => "", 
    "22" => "maths", 
    "23" => "", 
    "24" => "", 
), 
"1" => array 
(
    "0" => "", 
    "1" => "", 
    "2" => "", 
    "3" => "", 
    "4" => "", 
    "5" => "", 
    "6" => "", 
    "7" => "", 
    "8" => "", 
    "9" => "english", 
    "10" => "", 
    "11" => "maths", 
    "12" => "", 
    "13" => "", 
    "14" => "", 
    "15" => "", 
    "16" => "english", 
    "17" => "", 
    "18" => "", 
    "19" => "", 
    "20" => "", 
    "21" => "english", 
    "22" => "", 
    "23" => "", 
    "24" => "", 
), 
"2" => array 
(
    "0" => "", 
    "1" => "", 
    "2" => "", 
    "3" => "", 
    "4" => "", 
    "5" => "", 
    "6" => "", 
    "7" => "", 
    "8" => "", 
    "9" => "", 
    "10" => "", 
    "11" => "", 
    "12" => "", 
    "13" => "biology", 
    "14" => "", 
    "15" => "english", 
    "16" => "", 
    "17" => "", 
    "18" => "", 
    "19" => "", 
    "20" => "", 
    "21" => "", 
    "22" => "", 
    "23" => "maths", 
    "24" => "", 
), 
); 
+0

Können Sie das erwartete Ergebnis liefern? Denn es ist nicht ganz klar, was Sie hier erreichen wollen. – BVengerov

+0

Wenn Ihr Subarray von 0 bis 24 reicht, haben Sie nicht 25 Einträge für den 24-Stunden-Tag? Sollten Sie nicht "24" verlieren oder haben Sie einen Grund zwei Einträge für "Mitternacht" zu haben? –

+0

@BozidarSikanjic Es sollte von 0-23 sein Sie sind richtig danke –

Antwort

2

Sie diese Zufallszahl mit einer für jede Ebene des Arrays können:

$first = rand(0,6); 
$second = rand(0,23); 

$string = 'Random Subject'; 

$timetable[$first][$second] = $string; 

Je nachdem, wie viele ‚Gegenstand‘ Sie hinzufügen möchten, sollten Sie eine Reihe von zufälligen Themen erstellen und erstellen Sie eine andere Zufallsvariable, die eine zufällige Zeichenfolge aus diesem Array wählen würde:

$subjects = ['English', 'Maths', 'Biology']; 
$subs = rand(0,count($subjects)); 

$timetable[$first][$second] = $subjects[$subs]; 

Sie dies Operationen so oft wiederholen, wie Sie wollen, oder sie setzen in einer Funktion und wiederholen Sie es auf ein for.

+1

vielen Dank dafür, Entschuldigung für die etwas breite Frage und schlecht formatierten Code. Ich werde versuchen, dies zu implementieren und sehen, ob ich es zur Arbeit bringen kann. Ich muss nur einige Fehlerbehandlung hinzufügen, so dass zwei Themen in demselben Zeitfenster platziert werden, und eine Schleife, die läuft, bis alle Themen für die richtige Anzahl an Antworten platziert wurden. –

Verwandte Themen