Поскольку вы хотите отобразить поле select
, вам все равно придется перебирать массив.Единственное разумное условие перед этим может заключаться в том, забронированы ли уже все слоты.Тогда вы можете вообще не захотеть показывать <select>
, а вместо этого заметить.Поиск, если хотя бы один является 15
делает не , кажется, имеет смысл.
count($slots) === (array_count_values($slots)[15]??0)
верно, когда все слоты забронированы.
Полный блок генерации кода, включенный / отключенный <options>
или вообще не имеющий значения <select>
, может выглядеть так:
$slots =
[
'10:00:00' => 15,
'10:30:00' => 15,
'11:00:00' => 8,
];
if(count($slots) === (array_count_values($slots)[15]??0))
{
?>
<div>No slots are available anymore.</div>
<?php
}
else
{
?>
<select name="slot">
<option value="">select a time slot</option>
<?php
foreach ($slots as $k=>$v)
{
$avail = 15-intval($v);
?>
<option value="<?php echo $k;?>"<?php if($avail < 1) echo ' disabled'?>><?php echo "$k ($avail available)";?></option>
<?php
}
?>
</select>
<?php
}