De beschikbaartheid van een stoel wordt als volgt aangegeven:
0 = bezet
1 = beschikbaar
x = stoel suggestie
Hoe wordt dat gedaan: Eerst wordt er gekeken of de stoel beschikbaar is, is dat zo, dan markeert het de stoel beschikbaarheid met een 'x', afhankelijk van het aantal bezoekers. Voorbeeld: zijn er 6 bezoekers en zijn er 6 stoelen beschikbaar, dan krijgen deze opeenvolgend de waarde 'x'.
Wat is het probleem:
Ik heb een functie waarvan ik 'null' wil teruggeven als het gat ($gap) te klein is voor het aantal bezoekers. Voorbeeld(aantal bezoekers is 6, het gat is 4, dan zou het niet passen).
Op de een of andere manier klopt er iets niet aan mijn code want dit zelfde voorbeeld geeft aan dat het past, wat natuurlijk niet zo is.
Mijn vraag is volgt: Wat klopt er niet aan de code waardoor ik een positieve reactie in plaats van negatief krijg?
Mijn code:
<?php
error_reporting(E_ALL & ~E_NOTICE);
$visitors = 6;
$seats = array(
array(
'seatAvailable' => '0',
'seatNumber' => '1'
),
array(
'seatAvailable' => '0',
'seatNumber' => '2'
),
array(
'seatAvailable' => '1',
'seatNumber' => '3'
),
array(
'seatAvailable' => '1',
'seatNumber' => '4'
),
array(
'seatAvailable' => '1',
'seatNumber' => '5'
),
);
$gap = 0;
echo "Visitors: ".$visitors;
function suggestSeats($seats,$visitors){
foreach($seats as &$val){
//If available
if($val['seatAvailable'] == '1'){
//If there's no gap, start making one now:
if($gap<1){
$gap = 1;
}
$gap++;
//IF THERE ARE STILL VISITORS TO PROCESS, MARK THE SUGGESTED SEAT
if($visitors > 0) {
$val['seatAvailable'] = 'x';
$visitors--;
}
}
//IF THERE ARE NO MORE VISITORS, EXIT LOOP
if($visitors == 0) {
break;
}
}
echo "gap: ".$gap;
//If the visitors fit in gap
if($visitors<=$gap){
$result = "<p>It fits</p>";
}
//If the visitors can't fit in the gap of available seats.
else{
$result = "<p>Doesn't fit</p>";
}
return $result;
}
echo "<pre>";
print_r (suggestSeats($seats,$visitors));
echo "</pre>";
?>
Output van huidig script:
Visitors: 6
gap: 4
It fits