对于我在学校工作的项目的一部分,我正在建立一个房间预订系统。作为这个系统的一部分,我有一个页面,用户可以输入一个房间的标准,该页面将返回符合该标准并可免费预订的可用房间。如果用户搜索没有返回任何结果,我打算降低输入的标准,显示一个符合更改标准的房间并向用户显示一条消息,通知他们已更改的标准。这里显示了对函数suggestroom()的调用。如何防止显示未定义的变量错误? (我知道变量在这种情况下为空)
} 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;
}
因此,如果没有预订,空数组将被返回到建议的房间,这将继续下去,直到一个房间被发现(如果没有,我会让它所以其他条件发生变化时,不会太远未来)。
可以找到一个房间,并且代码可以工作,但是在发现房间之前运行代码的x倍的次数,即返回一个空数组时,我会得到一个未定义的变量消息。我怎样才能解决这个问题?
_“我怎样才能解决这个问题?” - 通过检查你想访问的变量是否存在之前存在。 isset /空。 – CBroe
[PHP的:“注意:未定义的变量”,“注意:未定义的索引”和“注意:未定义的偏移量”的可能的重复](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-通过检查'$ message' isset并且不是空的,在使用它之前 – Epodax
)有效,它对不同类型返回的结果是什么。 http://php.net/manual/pl/function.empty.php –