1~12까지 루프돌면서 저장된 값을 비교하여 체크하기 채택완료
안녕하세요
도움 좀 얻고자 합니다.

이미지처럼 저장된 값만 체크되로록 하려며 어떻게 해야 할까요?
</p>
<p>$month_arr = array("january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"); </p>
<p>$wr_1 = explode("|", $write["wr_1"]); </p>
<p>for($i=0; $i<=11; $i++) { </p>
<p>$num++; </p>
<p> foreach($month_arr as $v) {</p>
<p> in_array($v, $wr_1) ? $chk = "checked" : $chk = "";</p>
<p> }</p>
<p> echo "<input type='checkbox' name='wr_1_".$num."' value='".$v."' ".$chk."/> ".$num."월";</p>
<p>}</p>
<p>
답변 2개
foreach($month_arr as $v) {
in_array($v, $wr_1) ? $chk = "checked" : $chk = "";
}
이 부분 굳이 배열에서 비교하지 않아도 됩니다.
if( strpos($wr_1, $month_arr['$i']) !== false ) $chk = "checked"
else $chk = "";
그런데 왜 월을 영문으로 저장하시는지??
DB는 용량 최소화를 위해서 숫자로 저장하시고
불러올때 영문으로 변경하는게 좋습니다.
그리고 $num = $i+1; 하면 되겠네요..^^
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
echo 문을 foreach 문 안에서 쓰면 됩니다.
</p>
<p>foreach($month_arr as $v) {
in_array($v, $wr_1) ? $chk = "checked" : $chk = "";
echo "<input type='checkbox' name='wr_1_".$num."' value='".$v."' ".$chk."/> ".$num."월";
}</p>
<p>
어떤 처리를 하는 방법은 여러가지가 있습니다.
in_array() 로 처리를 할 수도, strpos 을 쓰는 것도, 그 외의 방법도 있을 수 있습니다.
지금의 상황에서는 in_array() 사용방식이 코드의 가독성 측면에서는 더 낫다고 볼 수도 있습니다.
물론, 다른 시각도 가능합니다.
하드웨어적인 발전이 많이 이루어져,
DB 데이터 타입/저장방식을 고민할 때 varchar 형을 int 형으로 바꾸는게
체감할 수 있는 정도의 향상이 있지는 않습니다.
최근에는 용량의 측면이 크게 중요한 고려대상은 아닙니다.
이 또한 가독성 또는 개발자의 취향에 따라 선택하여도 크게 무리가 되지는 않는다고 생각됩니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인