이 코드를 switch문이나 array로 사용하는 방법 알려주세요!! 채택완료
</p>
<p> if($point <= 500 && $good <= 5 && $attend <= 3) { echo '첫번째'; }
else if($point <= 600 && $good <= 10 && $attend <= 5) { echo '두번째'; }
else if($point <= 700 && $good <= 15 && $attend <= 10) { echo '세번째'; }
else if($point <= 800 && $good <= 20 && $attend <= 15) { echo '네번째'; }
else if($point <= 900 && $good <= 25 && $attend <= 20) { echo '다섯번째'; }</p>
<p>
위와 같이 각 3개의 변수들을 고정된 값과 비교해야 하는데
비교해야 하는 고정 값이 많아서 짧게 스위치나 배열로 사용하고 싶습니다.
짧게 예제 하나만 부탁드려도 될까요?
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
7년 전
</p>
<p>$n = $point . sprintf('%03d', $good) . sprintf('%03d', $attend);
$arr = array(500005003, 600010005, 700015010, 800020015, 900025020);
foreach($arr as $k =>$v) if ($n <= $v) break;
echo ++$k . '번째';</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
W
Winzr
7년 전
�
7년 전
[code]
function order($point, $good, $attend) {
$n = $point . sprintf('%03d', $good) . sprintf('%03d', $attend);
$arr = array(500005003, 600010005, 700015010, 800020015, 900025020);
for ($i=0; $i<count($arr); $i++)
if ($n <= $arr[$i]) break;
return $i == count($arr) ? '해당없음' : ++$i . '번째';
}
$point = 500; $good = 5; $attend = 3;
echo order($point, $good, $attend);
echo '<br>';
$point = 600; $good = 10; $attend = 5;
echo order($point, $good, $attend);
echo '<br>';
$point = 700; $good = 15; $attend = 10;
echo order($point, $good, $attend);
echo '<br>';
$point = 800; $good = 20; $attend = 15;
echo order($point, $good, $attend);
echo '<br>';
$point = 900; $good = 25; $attend = 20;
echo order($point, $good, $attend);
echo '<br>';
$point = 1900; $good = 25; $attend = 20;
echo order($point, $good, $attend);
echo '<br>';
[/code]
// output
1번째
2번째
3번째
4번째
5번째
해당없음
function order($point, $good, $attend) {
$n = $point . sprintf('%03d', $good) . sprintf('%03d', $attend);
$arr = array(500005003, 600010005, 700015010, 800020015, 900025020);
for ($i=0; $i<count($arr); $i++)
if ($n <= $arr[$i]) break;
return $i == count($arr) ? '해당없음' : ++$i . '번째';
}
$point = 500; $good = 5; $attend = 3;
echo order($point, $good, $attend);
echo '<br>';
$point = 600; $good = 10; $attend = 5;
echo order($point, $good, $attend);
echo '<br>';
$point = 700; $good = 15; $attend = 10;
echo order($point, $good, $attend);
echo '<br>';
$point = 800; $good = 20; $attend = 15;
echo order($point, $good, $attend);
echo '<br>';
$point = 900; $good = 25; $attend = 20;
echo order($point, $good, $attend);
echo '<br>';
$point = 1900; $good = 25; $attend = 20;
echo order($point, $good, $attend);
echo '<br>';
[/code]
// output
1번째
2번째
3번째
4번째
5번째
해당없음
댓글을 작성하려면 로그인이 필요합니다.
7년 전
만들어봤는데.. 더 복잡하네요..ㅋ
</p>
<p>$point_arr = array(1=>'500', 2=>'600', 3=>'700', 4=>'800', 5=>'900');
$good_arr = array(1=>'5', 2=>'10', 3=>'15', 4=>'20', 5=>'25');
$attend_arr = array(1=>'3', 2=>'5', 3=>'10', 4=>'15', 5=>'20');
$name_arr = array(1=>'첫번째', 2=>'두번째', 3=>'세번째', 4=>'네번째', 5=>'다섯번째');</p>
<p> foreach($point_arr as $key => $val) {
if($point<$val) $point_num=$key;
}
foreach($good_arr as $key => $val) {
if($good<$val) $good_num=$key;
}
foreach($attend_arr as $key => $val) {
if($attend<$val) $attend_num=$key;
}
$max_num = max($point_num,$good_num,$attend_num);
echo $name_arr[$max_num];</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
W
Winzr
7년 전
답변 감사합니다.
echo로 첫번째, 두번째 표현해줘야 하는 코드는 <img> 태그를 사용해야 하는데
이 부분은 배열 안쓰고 반복문으로만 가능할까요?
echo '<img src="http://test.com/' . $배열첫번째순서~마지막순서까지; . '.gif">';
=====================================================
그리고
array($point=>"500", $good=>"5", $attend=>"7"),
array($point=>"600", $good=>"10", $attend=>"15"),
array($point=>"700", $good=>"15", $attend=>"20"),
이런 식으로 한줄로 묶을 수도 있을까요?
echo로 첫번째, 두번째 표현해줘야 하는 코드는 <img> 태그를 사용해야 하는데
이 부분은 배열 안쓰고 반복문으로만 가능할까요?
echo '<img src="http://test.com/' . $배열첫번째순서~마지막순서까지; . '.gif">';
=====================================================
그리고
array($point=>"500", $good=>"5", $attend=>"7"),
array($point=>"600", $good=>"10", $attend=>"15"),
array($point=>"700", $good=>"15", $attend=>"20"),
이런 식으로 한줄로 묶을 수도 있을까요?
e
7년 전
그럼 이미지 이름을 level1.gif level2.gif level3.gif~
이렇게 만들면 아래처럼 하면 됩니다.
echo '<img src="http://test.com/level' . $max_num . '.gif">';
이렇게 만들면 아래처럼 하면 됩니다.
echo '<img src="http://test.com/level' . $max_num . '.gif">';
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
답변대기
채택
채택
답변대기
채택
채택
채택
채택
채택
채택
채택
채택
채택
답변대기
채택
채택
채택
채택
채택
채택
테스트 해보니 "1번째"만 뜹니다.
그리고 $point에는 단위가 1000이 되든, 10000이 되든
그 다음 $good, $attend도 읽을 수 있나요?
==================================================
sprintf 사용하신 $good과 $attend 출력해보니
$good의 변수 값이 15면 015 이런 식으로 출력 되더라구요..
그래서 값이 똑같지 않아서 $k가 ++되지 않는 것 아닐까요?