2016-11-10 9 views
2

私は現在、学生のためのリビジョンタイムテーブルを作成するプログラムを設計しています。私は、2次元の配列を通過する関数を作成しようとしている、その配列のランダムな場所に対象を挿入します。すなわち、mondayのスロット12の数学が次に翌日に移動します。週は前のページの変数として設定されています。メイン配列内の各配列を選択するのに役立つだけです。ここに私の2darrayがあり、心のIVEでクマは、ユーザー場合たとえば、値を持つユーザープットを満たしたテーブルである7foreachを使用して配列内のすべての配列に値を追加する方法は?

$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" => "", 
), 
); 

期待される結果があってもカントースペースを節約するために最初の3つの配列を含みます4時間英語の数学に6を入力し、生物学に2を入力した場合、配列はこのように見えるかもしれません。

'$'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

期待どおりの結果を提供できますか?あなたがここで達成したいものは完全にはっきりしていないからです。 – BVengerov

+0

サブアレイが0から24になる場合は、24時間に25のエントリがありますか?あなたは "24"を失ってはいけませんか、または "真夜中"のために2つのエントリーを持つ理由がありますか? –

+0

@BozidarSikanjic 0-23のはずです。ありがとうございます –

答えて

2

あなたは、配列の各レベルに対して1つのランダムな整数でこれを行うことができます:あなたが追加したいどのように多くの「件名」に応じて、

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

$string = 'Random Subject'; 

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

、あなたはランダムな科目の配列を作成する必要がありますし、この配列からランダムな文字列を選択することになり、別の確率変数を作成:

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

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

をあなたが好きな回数だけこの操作を繰り返し、または関数の内部でそれを入れて、でそれを繰り返すことができます。

+1

これはありがとう、多少広範な質問とひどくフォーマットされたコードのために申し訳ありません。私はこれを実装しようとすると私はそれを働かせることができます参照してくださいしようとします。私は2つの科目が同じタイムスロットに置かれるようにいくつかのエラー処理を追加するだけですが、すべての科目が正しい答えのために配置されるまで実行されるループです。 –

関連する問題