조건문으로 배열 내 특정 확장변수(price)에 number_format 적용하기 (aplos 게시판)
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.2 |
문제 페이지 주소 | 비공개 (작성 후 5일 경과) |
1. 아래 확장변수 중 빨간색 price만 number_format 적용하고 싶은데요.
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>
$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
<span cond="$i != '숫자'">{$exvalTemp[$i]}</span>
price 에 해당하는 $i 숫자를 조건에 넣어주면 될 것 같습니다.
죄송합니다. 문제가 조금 있습니다. 어제 처음 가격에 되는 걸 보고 기분좋아 바로 댓글 드리고 덮었는데 다시 보니 좀 이상하네요ㅠㅠㅎㅎ
숫자에 0을 입력하거나 price를 입력하니,
아래 그림처럼 금액에는 천단위 콤마가 잘되는데,
목록에는 다른 확장변수(지역,상태)는 출력되지않고,
글 본문에는 전화번호도 10 만 출력되고 있습니다.
price 아닌 경우에도 표시가 될 수 있도록 함께 넣어줘야 표시가 되지 않을까 싶습니다
알려주신 코드에 = 이 하나가 빠진 것 같아요.
그래서 <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] 이 부분을 맞게 해줘야 될 것 같은데 아무리 찾아봐도 안되네요.
저 배열을 어떻게 수정해줘야 될 지 모르겠어요.
감사드립니다.
하 chatgpt로 해결된 것 같습니다.
여러번 질문하고 chatgpt가 실수한 사소한 오류를 고쳐서 다시 질의하고하다보니 일단은 원하는 데로 나오네요.
chatgpt의 설명을 보면서 하나씩 공부해보면 도움이 될 것 같습니다.
앞으로 debug 시 항상 chatgpt도 병행할 것 같습니다.
alfredo님의 도움,관심으로 한 고개 또 넘어가게 되었습니다. 감사드립니다.
아래 수정한 소스 참조 바랍니다.
{@ $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>