2017-11-09 8 views
0

안녕하세요.

Ive는 고객이 6 개월로 지불을 분할 할 수있는 방법을 보여줄 모든 코딩을 완료했습니다. 모든 것이 좋은데, 금액이 1000을 넘을 때 새로운 가격에 대한 산출물에 문제가있는 것을 제외하고는 공간 때문에 그런 것 같습니까?! 1 000 ...? Pay over 6 months: <?php if ($price_calculate['price_wo_discount']>0) echo round(($price_calculate['price_wo_discount'])*0.16); ?>

+0

공간을 제거하지 마십시오 – nogad

+0

출력 atm. 가격이 언제인지; 이전 가격 : 가격 762, - 새로운 출력 : 6 개월 초과 지불 : 121, - 이전 가격 : 가격 1001, - 신규 출력 : 6 개월 후 지불 : 0, - – easyquestions

+1

*** 부동 소수점 숫자를 사용하지 마십시오. *** 통화를 처리 할 수있는 적절한 라이브러리를 사용하십시오. 예 : https://packagist.org/packages/moneyphp/money – Sammitch

답변

1

당신이 PHP에서 이런 일을하려고하면,

echo round('1 000' * 0.16); 

당신은 Notice: A non well formed numeric value encountered in ...을 얻을 것입니다 :

는 코드입니다. 이는 PHP가 문자열을 적절한 숫자 값으로 안전하게 캐스팅 할 수 없기 때문입니다. 그것은 마술로 문자열을 0으로 던지고주의를 던집니다. 그것이 0 출력을 얻는 이유입니다.

이상적으로 숫자 문자열에서 공백과 쉼표를 모두 제거한 다음 is_numeric 함수를 사용하여 문자열이 실제로 숫자인지 확인한 다음 round을 수행해야합니다.

if ($price_calculate['price_wo_discount'] > 0 블록에 암시 적으로 캐스트하면 부작용이 발생할 수 있습니다. PHP에서 이것을 고려 :

var_dump('1 is number' > 0); //outputs true 

내 조언을 : 값을 사용하여 먼저 입력의 유효성을 검사 객체.