Q&A

조건문으로 배열 내 특정 확장변수(price)에 number_format 적용하기 (aplos 게시판)

2024.06.21 10:40
234
0
CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.2
문제 페이지 주소 비공개 (작성 후 5일 경과)

1. 아래 확장변수 중 빨간색 price만 number_format 적용하고 싶은데요.

 

1.png

 

2. aplos 게시판 스킨을 보니 확장변수가 배열로 되어있습니다.

37 라인 : {$exvalTemp[$i]}

 

배열 중 price만 number_format 적용되게 하려면 조건문을 어떻게 줘야 하나요?

도움 부탁드립니다.

{@
$exvalStyle = $exvalImage = $exvalCheck = $exvalTemp = null;
if($document):
if ($val->type == 'radio' || $val->type == 'checkbox' || $val->type == 'select'):
$exvalTemp = explode(',',$document->getExtraValueHTML($val->idx));
else:
$exvalTemp[0] = $document->getExtraValueHTML($val->idx);
endif;
elseif($oDocument):
if ($val->type == 'radio' || $val->type == 'checkbox' || $val->type == 'select'):
$exvalTemp = explode(',',$val->getValueHTML($val->idx));
else:
$exvalTemp[0] = $val->getValueHTML($val->idx);
endif;
endif;
for ( $i=0 ; $i < count($exvalTemp) ; $i++ ):
if (in_array($exvalTemp[$i],$exval_custom_list)):
$exvalStyle[$i] = $exval_custom_style[array_search($exvalTemp[$i],$exval_custom_list)];
$exvalCheck[$i] = "style";
elseif (in_array($exvalTemp[$i],$exval_image_list)):
$exvalImage[$i] = $exval_image_url[array_search($exvalTemp[$i],$exval_image_list)];
$exvalImageStyle[$i] = $exval_image_style[array_search($exvalTemp[$i],$exval_image_list)];
$exvalCheck[$i] = "image";
else:
$exvalCheck[$i] = "normal";
endif;
endfor;
}
<block loop="$i=0;$i < count($exvalTemp);$i++">
<!--@if($exvalCheck[$i]=='style')-->
<span style="{$exvalStyle[$i]};{$mi->exval_style_common}">{$exvalTemp[$i]}</span>
<block cond="$i+1 < count($exvalTemp)"> </block>
<!--@elseif($exvalCheck[$i]=='image')-->
<img src="{$exvalImage[$i]}" style="{$mi->exval_image_style}; {$exvalImageStyle[$i]}" />
<block cond="$i+1 < count($exvalTemp)"> </block>
<!--@else-->
<span>{$exvalTemp[$i]}</span>
<block cond="$i+1 < count($exvalTemp)">, 
</block><!--@end-->
</block>

 

hatali Lv. 4

댓글 6

  • 2024.06.21 12:37 #1828472
    <span cond="$i == '숫자'">{number_format($exvalTemp[$i])}</span>
    <span cond="$i != '숫자'">{$exvalTemp[$i]}</span>
    price 에 해당하는 $i 숫자를 조건에 넣어주면 될 것 같습니다.
  • 2024.06.21 13:04 #1828485
    alfredo님 너무 감사드립니다. 바로 해결되었습니다. 숫자대신 price 를 넣어도 동일하게 되었습니다.
  • 2024.06.22 03:22 #1828581

    죄송합니다. 문제가 조금 있습니다. 어제 처음 가격에 되는 걸 보고 기분좋아 바로 댓글 드리고 덮었는데 다시 보니 좀 이상하네요ㅠㅠㅎㅎ

     

    숫자에 0을 입력하거나 price를 입력하니,

    아래 그림처럼 금액에는 천단위 콤마가 잘되는데,

     

    목록에는 다른 확장변수(지역,상태)는 출력되지않고,

    글 본문에는 전화번호도 10 만 출력되고 있습니다.

     

    3.png

     

    2.png

     

  • 2024.06.22 11:12 #1828632
    <span cond="$i != '숫자'">{$exvalTemp[$i]}</span>
    price 아닌 경우에도 표시가 될 수 있도록 함께 넣어줘야 표시가 되지 않을까 싶습니다
  • 2024.06.22 12:42 #1828640

    알려주신 코드에 = 이 하나가 빠진 것 같아요.
    그래서 <span cond="$i !== '숫자'">{$exvalTemp[$i]}</span>

    이렇게 해보니 아래 그림처럼 다른 확장변수도 나오는데,

    50,000 50000원

    이렇게 나오면서

     

    "number_format() expects parameter 1 to be float, string given" 이런 오류가 나오네요ㅠㅠ

    어렵네요. 검색해보니 number_format에는 숫자형이 와야된다는데 이리저리 수정해봐도 해결이 안되네요.

     

    number_format($exvalTemp[$i]) 이곳의 배열 [$i] 이 부분을 맞게 해줘야 될 것 같은데 아무리 찾아봐도 안되네요.

    저 배열을 어떻게 수정해줘야 될 지 모르겠어요.

    감사드립니다.

     

    12.png

     

    11.png

  • 2024.06.23 03:25 #1828691

    하 chatgpt로 해결된 것 같습니다.

    여러번 질문하고 chatgpt가 실수한 사소한 오류를 고쳐서 다시 질의하고하다보니 일단은 원하는 데로 나오네요.

    chatgpt의 설명을 보면서 하나씩 공부해보면 도움이 될 것 같습니다.

    앞으로 debug 시 항상 chatgpt도 병행할 것 같습니다.

    alfredo님의 도움,관심으로 한 고개 또 넘어가게 되었습니다. 감사드립니다.

     

    아래 수정한 소스 참조 바랍니다.

    <span>
        {@ $is_numeric = is_numeric($exvalTemp[$i]); }
        {@ if($is_numeric): $formattedValue = number_format($exvalTemp[$i]); 
           else: $formattedValue = $exvalTemp[$i];
           endif;
        }
        {@ if($i > 0): },
        {@ endif; }{$formattedValue}
    </span>