Вы explode
- обслуживаете сервисы, что делает его массивом.
Foreach
выполняет итерацию по массиву (в вашем примере он состоит из двух элементов), поэтому код в теле этого foreach будет повторяться дважды.Если у вас есть 3 элемента, это будет повторяться три раза.И т. Д.
Один из способов добиться того, что вам нужно, - использовать in_array
, чтобы проверить, находится ли служба в имеющемся вами массиве.Если он находится в массиве, отметьте флажок как checked
.
<?php
$edit_data->service_day = "목,토";
$service_day = explode(',', $edit_data->service_day);
?>
<input type="checkbox" name="service_day[]" id="checkbox2_1" value="월"
<?php if(in_array("월", $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_1">월</label>
<input type="checkbox" name="service_day[]" id="checkbox2_2" value="화"
<?php if(in_array("화", $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_2">화</label>
<input type="checkbox" name="service_day[]" id="checkbox2_3" value="수"
<?php if(in_array("수", $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_3">수</label>
<input type="checkbox" name="service_day[]" id="checkbox2_4" value="목"
<?php if(in_array("목", $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_4">목</label>
<input type="checkbox" name="service_day[]" id="checkbox2_5" value="금"
<?php if(in_array("금", $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_5">금</label>
<input type="checkbox" name="service_day[]" id="checkbox2_6" value="토"
<?php if(in_array("토", $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_6">토</label>
<input type="checkbox" name="service_day[]" id="checkbox2_7" value="일"
<?php if(in_array("일", $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_7">일</label>
</td>
Другой подход:
<?php
//All of the available service days
$available_service_days = ['월', '화', '수', '목', '금', '토', '일'];
//Checked service days
$edit_data->service_day = "목,토";
$service_day = explode(',', $edit_data->service_day);
//Loop through the available service days to generate checkbox
foreach($available_service_days as $key => $available_service_day) {
//Print the checkbox and check it if necessary
?>
<input type="checkbox" name="service_day[]" id="checkbox2_<?php echo $key; ?>" value="<?php echo $available_service_day; ?>"
<?php if(in_array($available_service_day, $service_day)){echo 'checked="checked"';}?>
>
<label for="checkbox2_7"><?php echo $available_service_day; ?></label>
<?php } ?>