私は学校で働いているプロジェクトの一部として、私は部屋の予約システムを構築しています。このシステムの一環として、私はユーザーが部屋の基準を入力できるページを持っており、そのページはその基準に合った空室を返し、予約のために無料となります。ユーザーの検索結果が返されず、入力した条件を下げる予定の場合は、変更された条件を満たす部屋を表示し、変更された条件を通知するメッセージをユーザーに表示します。関数suggestroom()の呼び出しがここに表示されます。未定義の変数エラーが表示されないようにするにはどうすればよいですか? (私はこの変数がnullであることを知っています)
} else {
$reducecapacity = 1;
do {
$booking = new Booking();
$suggestedrooms = $booking->suggestroom(($capacity - $reducecapacity), $appletv, $printer);
$reducecapacity = $reducecapacity + 1;
} while($suggestedrooms === null);
echo 'This room has a cacpacity of: ' . ($capacity-($reducecapacity-1));
for($x=0; $x<count($suggestedrooms); $x++) {
echo $suggestedrooms[$x];
}
}
Public function SuggestRoom($capacity, $appletv, $printer) {
if($appletv == 1 and $printer ==0) {
$roomname = DB::GetInstance()->query("SELECT roomname FROM room WHERE capacity >= '$capacity' AND appletv ='$appletv'");
} elseif($appletv == 0 and $printer == 1) {
$roomname = DB::GetInstance()->query("SELECT roomname FROM room WHERE capacity >= '$capacity' AND printer = '$printer'");
} elseif($appletv == 1 and $printer == 1) {
$roomname = DB::GetInstance()->query("SELECT roomname FROM room WHERE capacity >= '$capacity' AND appletv ='$appletv' AND printer = '$printer'");
} else {
$roomname = DB::GetInstance()->query("SELECT roomname FROM room WHERE capacity >= '$capacity'");
}
$roomcount = $roomname->count();
if($roomcount == 0) {
echo 'No classes match your criteria';
} else {
for($x=0; $x<$roomcount; $x++) {
$RoomArray[$x] = $roomname->results()[$x]->roomname;
}
}
$LoopCount = 0;
$EndLoop = false;
$RNDnum = 0;
$availableroomcount = 0;
do {
$suggestedRoom = $RoomArray[$RNDnum];
$getRoomID = DB::GetInstance()->query("SELECT roomid FROM room WHERE roomname = '$suggestedRoom'");
$roomid = $getRoomID->results()[0]->roomid;
$bookingid = Input::get('bookingdate') . Input::get('period') . $roomid;
$CheckIfBooked = DB::GetInstance()->query("SELECT bookingid FROM booking WHERE bookingid = '$bookingid'");
if($CheckIfBooked->count() ==0) {
$availablerooms[$availableroomcount] = $suggestedRoom;
$availableroomcount = $availableroomcount+1;
}
if($LoopCount===$roomcount-1) {
$NoRoomMessage = true;
$EndLoop = true;
$suggestedRoom = null;
}
$LoopCount = $LoopCount+1;
$RNDnum = $RNDnum +1;
} while ($EndLoop <> 1);
return $availablerooms;
}
したがって一切の予約がない場合、nullの配列が提案された客室に返され、部屋が見つかるまでこれがないそこまで、変更されていない場合、私はそれので、他の基準を作ります(継続します先にはまだ)。
部屋がありますが、部屋が見つかる前にコードが実行された、つまり空の配列が返されたx回の間、コードは動作しますが、未定義の変数メッセージが返されます。どうすればこの問題を回避できますか?
_ "アクセスする変数が存在するかどうかをチェックすることで、これを回避できますか?" isset/empty。 – CBroe
[PHP: "通知:未定義変数"、 "通知:未定義インデックス"、 "通知:未定義オフセット"](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable- '$ message'が設定されていて空でないかどうかをチェックして – Epodax
を使用する前に –