2016-12-19 10 views
1

私のプロジェクトには、教室の時間割の自由な場所を見つけるためのモジュールがあります。私はデータベースから問題なく変数を取っています。私はどの教室にどれくらいのDBがあるのか​​という教室のためのリターンである配列が必要です。この教室では、1から12までの可変期間があり、各期間には期間があります。たとえば、4期間3期間で1 2 3 xxx 7 8 9 10 11 12と書いてください。また、9期間2期間1 2 3 xxx 7 8 xx 11 12.クエリーでclass_noを指定すると、1D配列でそれを行いました。それは教室以上のことです。 1行に1..12という数字だけが表示されます。実際に2D配列はデータを表示しません

$dayy = $_GET['src_day0']; 
$drt = $_GET['src_duration0']; 
$tm = $_GET['src_time0']; 
$faculty_id = $_SESSION['faculty_id']; 
$scale = "select DISTINCT t.class_no,t.time,t.duration from ttable t,class c where 
      day='$dayy' AND (t.faculty='$faculty_id' OR c.faculty='$faculty_id')"; 
$result = $conn->query($scale); 
$x = 1; 
while ($rows = $result->fetch_assoc()) { 
    $class = $rows['class_no']; 
    $arr = array(
     array($x => "$class"), 
     array(
      1 => " 1 ", 2 => " 2 ", 3 => " 3 ", 4 => " 4 ", 5 => " 5 ", 6 => " 6 ", 
      7 => " 7 ", 8 => " 8 ", 9 => " 9 ", 10 => " 10 ", 11 => " 11 ", 12 => " 12 ", 
     )); 
    $x++; 
} 
while ($rows = $result->fetch_assoc()) { 

    $time = $rows['time']; 
    $duration = $rows['duration']; 

    $result1 = ($time + $duration); 
     for($j=1;$j<$x;$j++) 
     for ($i = $time; $i < $result1; $i++) 
       $arr[$j][$i] = "x1"; 
      } 

} 
for ($i = 1; $i < $x; $i++) { 
    for ($j = 1; $j < 13; $j++) 
     echo $arr[$i][$j]; 
    echo "</br>"; 
+2

に正しい時刻値を変更します。エコー部分には – Carcigenicate

答えて

0

あなたの配列をmissbuilded :)

あなたがあなたのコードを見ている場合は、次のループの各反復のために

 $class = $rows['class_no']; 
     $arr = array(
      array($x => "$class"), 
      array(
       1 => " 1 ", 2 => " 2 ", 3 => " 3 ", 4 => " 4 ", 5 => " 5 ", 6 => " 6 ", 
       7 => " 7 ", 8 => " 8 ", 9 => " 9 ", 10 => " 10 ", 11 => " 11 ", 12 => " 12 ", 
      )); 
     $x++; 

を、あなたは新しい値で配列を上書きします。

実際、新しいデータを作成して配列に追加する必要があります。ここで

$arr = []; 
while ($rows = $result->fetch_assoc()) { 
    $arr[ $rows['class_no'] ] = [1 => ' 1 ', 2 => ' 2 ', /*...*/]; 
} 

// free memory if needed 

while ($rows = $result->fetch_assoc()) { 
    for($i = $rows['time'] ; $i < $rows['time'] + $rows['duration'] ; $i++) { 
    $arr[ $rows['class_no'] ][ $i ] = 'x'; 
    } 
} 

は、あなたが配列型の空の変数$arrを作成します。 それを行う方法は、次のようなプロセスです。次に、ループ上の各データについて、デフォルト値の新しい行(各​​用)を作成しました。第二のループで は、あなたが結果に再び繰り返すが、ここでは、あなたが実際にあなたの問題を説明し、より良いタイトルを追加してください​​することにより、各配列データを取得し、x

+0

も問題あります。それは何も表示されません。すべての配列を書き込むためにエコー部分を送信できますか? –

+0

どうやってやるの? :pあなたは 'foreach'という関数を使うことができます(つまり、' foreach($ array as $ class_no => $ values){...} ')。配列上のデータを見るには、 'var_dump($ variable);' –

関連する問題