2012-07-25 5 views
1

PHP 함수에서 일부 산술 (주로 곱셈/나눗셈)에 사용되는 변수가있는 상황이 있습니다. 변수는 실제로 다른 함수에서 함수로 전달됩니다. 전달되는 것은 숫자 값이거나 문자열 값일 수 있습니다.PHP 산술에서 문자열 사용

그래서 기본적으로 내가 가진 :

$inverse = 1/$number; 

$number이 유효한 숫자 또는 문자열 중 어디에서 할 수있다.

$number이 문자열 일 때 내 질문이 어떻게됩니까? 어떻게 PHP가 그 상황을 처리합니까?

궁극적으로 대답은 너무 중요하지 않습니다. 상황을 해결하기위한 몇 가지 방법을 생각해 볼 수 있습니다. 그것은 그것이 생겨났다는 것이고, 나는 궁금해하고, 빠른 구글 검색은 내 질문에 대답 할 수 없었다. 대답을 알 필요가 없더라도 PHP의 작동 원리를 이해하면 앞으로 도움이 될 것이기 때문에 대답을 알고 싶습니다.

감사합니다.

답변

3

PHP는 타입 - 강제 변환 (type-juggling이라고도 함)을 수행하고 숫자 컨텍스트에서 변수가 사용될 때 문자열 인 경우 값을 숫자로 해석하려고 시도합니다. 숫자가

분할 연산자 ("/")가 두 피연산자가 (정수로 변환됩니다 또는 문자열) 정수하지 않는 한 부동 소수점 값을 반환하고 :

는 나누기 연산자에 the docs를 참조하십시오 이 경우 정수 값은 이됩니다.

또한 관련성 String conversions to a number 다음과 같이

스트링이 숫자 문맥에서 평가

결과 값 및 형식을 결정한다.

....

값은 문자열의 처음 부분으로 지정됩니다. 문자열 이 유효한 숫자 데이터로 시작하는 경우이 값이 사용됩니다. 그렇지 않으면 값은 0입니다. 유효한 숫자 데이터는 선택적 기호 다음에 하나 이상의 숫자 (선택적으로 소수점 포함)와 그 뒤에 선택적 지수가옵니다. 지수는 이고 'e'또는 하나 이상의 숫자가 뒤 따른 'E'입니다.

1

PHP는 자동으로 문자열을 부동 소수점 숫자로 변환합니다.

1

문자열을 취하여 해당 값을 분석합니다 ( 예 : "1bottle"). 1이됩니다. 일반적인 규칙은 문자열의 첫 번째 부분 안의 모든 숫자 문자가 float로 변환된다는 것입니다. 따라서 12.3bottle = 12.3, .3alonin = 0.3 등입니다. 첫 번째 숫자 문자가 없으면 값은 0입니다.

이것을 type juggling이라고합니다.

+0

그러나 1e3은 1000으로 변환됩니다. PHP는 매우 까다 롭습니다. – Antimony

+0

12.3은 너에게 보이는가? –

+0

@KarolyHorvath, 죄송합니다. – Shoe