Я работаю над кодом, который принимает случайное значение, проверяет, правильно ли это с несколькими проверками, и если да, то он вернет его. Если это не так, предполагается перезапустить функцию до тех пор, пока она не будет найдена.Функция повторного запуска, если false
Если случайное значение правильно он будет установлен вар 1, как это: $chosen = 1;
, а затем с помощью цикла, пока она будет продолжать работать текущую функцию до тех пор пока это 0:
public function generate_chair($id, $optredenID)
{
$model = new Model_Shop;
// Get all the chairs for the given room
$chairs = $model->check_chair($id);
// Get an array of reserved chairs for a given event
$reserved = $model->get_reserved($optredenID);
do {
// If chosen = 0, all chairs are available.
// If chosen = 1, one of the chairs is not available
$chosen = 0;
// Create a new empty array
$rand_chairs = array();
// Pick a random chair
$chair = array_rand($chairs);
// Based off the amount chosen in the dorpdown, build array
switch($_POST['AantalPlaatsen']) {
case '1':
array_push($rand_chairs, $chair);
break;
case '2':
array_push($rand_chairs, $chair);
array_push($rand_chairs, $chair+1);
// Check if the chair chosen is the last chair in a row
// If it is, check for another chair
if($chair == 20 || $chair == 40 || $chair == 60 || $chair == 80 || $chair == 100 || $chair == 120 || $chair == 140 ||$chair == 160 ||
$chair == 180 || $chair == 200) {
$chosen = 1;
}
break;
case '3':
array_push($rand_chairs, $chair);
array_push($rand_chairs, $chair+1);
array_push($rand_chairs, $chair+2);
break;
case '4':
array_push($rand_chairs, $chair);
array_push($rand_chairs, $chair+1);
array_push($rand_chairs, $chair+2);
array_push($rand_chairs, $chair+3);
break;
}
// Check if one of the random generated chairs is in the reserved array
// If so, the chair is unavailable and new random must be generated
if(count(array_intersect($rand_chairs, $reserved)) != 0) {
$chosen = 1;
}
} while ($chosen == 1);
return $rand_chairs;
То, что я хотел работает сейчас, но мне интересно, есть ли у кого-то идея для другой проблемы. Как показано в шкафу-переключателе, когда клиент выбирает 2 стула, а первый - в конце строки, он должен проверить новый стул, потому что вы не можете раскладывать несколько стульев на несколько рядов.
То, как я это делаю, - это много (слишком много), если утверждения. Кто-нибудь знает лучшее решение?
использовать пока цикл до тех пор, пока не будет выбран 0. –
Было бы проще помочь вам, если бы вы включили немного больше своих код. Как сейчас, этот вопрос кажется мне слишком расплывчатым. Вы можете ответить на него по-разному. –
@kuroineko Я обновил сообщение, чтобы включить всю функцию. – user1433479