채택완료

이게 왜 그럴까요?

2017-12-08 (금) 17:01:41 4,292

     포인트가 0보다 작으면 빨간색으로 그렇지 않으면 양수값이면 녹색으로 표시하라고 한건데...

음수도 녹색으로 표시하네요,,,

      <? if($mb[mb_point] < 0) $red="color:red;"; else $red='color:green;font-size:14px'; ?>
            
            <span style="<?= $red ?>"

>
            <? if ($is_admin || $member[mb_id]==$list[$i][mb_id]){
$mb = get_member($list[$i][mb_id], 'mb_point'); 
 echo number_format($mb[mb_point]);
}?> 
            </span>

|

답변 4개 / 댓글 4개

채택된 답변
+20 포인트
Copy
<?php
  $mb = get_member($list[$i][mb_id], 'mb_point');
  if($mb[mb_point] <= 0) $red='color:red;'; else $red='color:green;font-size:14px';
  ?>

  <span style="<?php echo $red ?>">
  <?php
  if ($is_admin || $member[mb_id]==$list[$i][mb_id]){
   echo number_format($mb[mb_point]);
  }
  ?>
  </span>

$mb = get_member($list[$i][mb_id], 'mb_point'); 

이 실행되기 이전에

$mb[mb_point] 를 체크하니 당연히 $mb 변수가 있기 전이기 때문에

빈값이 들어가니까 그렇게 되는것같네요

결론은 코드 순서가 지금 안맞아요

간단하게 설명하자면
<? if ($is_admin || $member[mb_id]==$list[$i][mb_id]){
$mb = get_member($list[$i][mb_id], 'mb_point'); 

if($mb[mb_point] < 0) $red="color:red;"; else $red='color:green;font-size:14px';
 echo number_format($mb[mb_point]);
}?> 
이렇게 $mb가 선언된 이후에 코드를 넣어야합니다.

답변에 대한 댓글 1개

2017-12-08 (금) 18:23:35
감사합니다 쉽게 설명해주셔서~
채택드려야 하는데..1분 뿐이라 화납니다.

위에 작업 하시기 바로 위에

var_dump($mb[mb_point]);

으로 실제 어떤 값이 나오는지 확인 해보셔야 할듯 합니다.

답변에 대한 댓글 1개

2017-12-08 (금) 18:24:04
도움이 되었습니다~~

 <? if(intval($mb[mb_point]) < 0) {$red="color:red;"; } else{ $red='color:green;'} $red .='font-size:14px'; ?>

로 변경해보세요

답변에 대한 댓글 2개

2017-12-08 (금) 18:23:50
채택드려야 하는데..1분 뿐이라 화납니다.
@민쯩먼저깔게요
ㅎㅎ 괜찮습니더
숫자를 비교할때 참고하시라고 intval
로 형변환 했던거구요
한줄 if문은 단일구조일때만 잘 작동합니다
굳이 한줄로 하시려면 중괄호{}로 감싸야죠
이번껀의 적폐(?)는 중괄호 누락입니다

답변을 작성하려면 로그인이 필요합니다.