2016-09-24 7 views
-2

데이터베이스의 값은 전화 번호입니다 63906xxxxxxx입니다. 자, PhP의 32 비트 버전을 가지고 있으므로이 숫자를 정확하게 12 자리로 가져 오는 방법을 알아보십시오.끝에 .0없이 전화 번호 문자열을 int 또는 float로 변환하는 방법은 무엇입니까?

다음은 문자열로 가져 오는 코드입니다. $ contactNum = $ ngo_cotactNo;

 $numeric_indexed_array = array_values($contactNum); 
     $n = $numeric_indexed_array[0]; 

dd ($ n); 출력 : "639063449729"

다음은 int로 변환 된 문자열로 변환하는 코드입니다. $ contactNum = $ ngo_cotactNo;

 $numeric_indexed_array = array_values($contactNum); 
     $n = $numeric_indexed_array[0]; 
     $number = (int) $n; 
     dd($number); 

출력 : 떠 2147483647 문자열 출력 : 639063449729.0

내가 원하는 내가하고 내 SMS를 messaging.I've의 API에 전달하는 데 사용할 수있는 정수 639063449729 그렇다 어제부터이 일을하고 있지만 행운은 없습니다.

+1

왜 문자열에서 Int 또는 float로 변환 하시겠습니까? 아마도 문자열로 유지하는 것이 가장 좋습니다. – AndrewL

+0

문자열로 유지해야합니다. – nogad

+0

여기에서 토론을 참조하십시오. http://dba.stackexchange.com/questions/124546/datatype-for-phone-number-varchar-int-or-bigint - 의미가있는 이유가있을 수 있습니다. 전화 번호가 문자열 이외의 데이터 유형으로 저장되는 경우 – kerrin

답변

0

전화 번호를 정수 또는 부동 소수점으로 변환하지 마십시오. 32 비트 환경에서 양의 정수는 2^31 이상으로 증가하는데 이는 2 000 000 000보다 약간 큽니다. 32 자리 숫자를 12 자리로 지정하는 것은 불가능합니다. 수레를 사용하지 마십시오. 제한된 정밀도를 가진 수레는 전화 번호가 다음 표현 가능 숫자로 반올림 될 수 있습니다. 그들을 문자열로 남겨주세요.

위키 백과는 말한다 : 국제 전화 네트워크에서

, ITU-T 권고 E.164에 의해 표준화 전화 번호의 형식을. 이 코드 은 전체 숫자를 15 자리 이하로 지정하고 은 국가 번호로 시작하도록 지정합니다.

+0

문제 해결 : 데이터베이스의 데이터 유형을 BIGINT로 설정하기 만하면됩니다. 답을 고맙습니다. 나는 그것에서 무언가를 배웠다. – Chee