0

致命的なエラーが発生しています。ここで何が欠けていますか?助けてくれてありがとう。私は学んでいます。特定の日付の間でどの日付が開いているかをテストしようとしています。

<?php
$query = 'SELECT venueprofile.venuename, venueprofile.capacity, venueprofile.contact,          venueprofile.EmailAddress, venueprofile.tele, venueprofile.st, venueprofile.city,        showdate.show_date, showdateid'
    . ' FROM `venueprofile` '
    . ' INNER JOIN `showdate` ON venueprofile.venueid = showdate.venueid'
    . ' WHERE show_date BETWEEN \'2013-06-15\' AND \'2013-06-25\''
    . ' AND capacity BETWEEN 500 AND 3000 '
    . ' ';


$startDate = '$date1'; 
$enddate = '$date2'; 
$dates = array($startDate); 
while ($startDate != $enddate) { 
$startDate = date('Y-m-d', strtotime($startDate . ' +1 day')); 
$dates[] = date; 
} 
; 


$bookings = array("2013-06-16","2013-06-20");
foreach ($dates as $date) { 
if (in_array($date, $bookings)) { echo ""; } 
else { echo $date . " is Open\n";}}

?>
4

2 に答える 2

3
$startDate = '$date1'; 
$enddate = '$date2'; 

これは期待どおりには機能しません。一重引用符は、変数の補間を防ぎます。また、引用符は必要ありません。

$startDate = $date1; 
$enddate = $date2;

さらに、ループ条件を変更することをお勧めします。

while ($startDate < $enddate) { 

そうすること$startDate > $enddateで、ループが始まる前の問題を防ぐことができます。

最後に、次のステートメントは機能しません。

$dates[] = date;

dateおそらく定義していない定数です。あなたはおそらくこれを意味しました:

$dates[] = $startDate;
于 2013-05-27T03:43:13.427 に答える
0

Jack がすでに指摘した問題に加えて、1 つのループだけを使用して、日付の配列を作成する必要がないようにする方がはるかに効率的だったように思えます。

だから、このようなもの:

$bookings = array("2013-06-16","2013-06-20");

$startDate = $date1; 
$enddate = $date2; 

while ($startDate <= $enddate) { 
  if (!in_array($startDate, $bookings)) {
    echo $startDate . " is Open\n";
  }
  $startDate = date('Y-m-d', strtotime($startDate . ' +1 day')); 
}

$datesそれとも、他の目的で配列が必要でしたか?

于 2013-05-27T08:42:23.787 に答える