以下のコードにつきまして、お聞きしたいことがあります。
<div class="reserve_time_list"> @foreach(range(10,18) as $key => $hour) <div class="reserve_time_block flex"> @foreach(array('reserve_status_left' => '00','reserve_right' => '30') as $className => $minute) @if($hour == 18 && $minute == 30) <span> </span> @else <div class="{{$className}} reserve_status flex"> <p>{{$hour}}:{{$minute}}</p> @if(isset($occupied[$key])) @if($hour . ':'. $minute == $occupied[$key]) @php var_dump($occupied); @endphp <p class="no_reservation">✖</p> @else <form action="/reserve/infomation" method="post"> {{ csrf_field() }} <input type="hidden" name="time" value="{{$hour}}時{{$minute}}分"> <input type="hidden" name="date" type="submit" value="{{ $date_display_formt }}"> <input type="hidden" name="dayOfWeek" value="{{ $day }}"> <input class="calendar_button reserved_time_button" type="submit" value="〇"> </form> @endif @else <form action="/reserve/infomation" method="post"> {{ csrf_field() }} <input type="hidden" name="time" value="{{$hour}}時{{$minute}}分"> <input type="hidden" name="date" type="submit" value="{{ $date_display_formt }}"> <input type="hidden" name="dayOfWeek" value="{{ $day }}"> <input class="calendar_button reserved_time_button" type="submit" value="〇"> </form> @endif </div> @endif @endforeach </div> @endforeach </div>
現在、こちらのコードの$occupiedには下記の3つの要素が入っています。
自分の想定ですと、@if($hour . ':'. $minute == $occupied[$key])
こちらの比較において、
<p>{{$hour}}:{{$minute}}</p>
ここの部分が「10:00」「10:30」「11:00」の時は、<p class="no_reservation">✖</p>が出力されると思うのですが、現状「10:00」のブロックでしか、<p class="no_reservation">✖</p>ここは出力されません。
追記です
@if(isset($occupied[$key]))こちらの行の後に、@php var_dump($key); @endphpとして、keyを確認しましたら、@if($hour . ':'. $minute == $occupied[$key])ここの比較で、$hour . ':'. $minuteが10:00の際に「$occupiedのkeyは「0」を参照するのですが、10:30の際も「0」が参照されていることが分かりました。
現状、$keyが1時間おきにしかプラスされないため、30分ごとの比較ができない状況となってしまっています。
打開策などありましたら、教えて頂けましたら幸いです。
回答1件
あなたの回答
tips
プレビュー