2011-02-04 2 views
1

SUBSTR 기능을 정수로 변환 문자열을 허용하지 않습니다 PHP를 허용하지 않습니다 ... : PPHP의 SUBSTR - 첫 번째 매개 변수는 정수

상황

내가 좋아하는 코드를두면

<?php 

$key = '35110100840754000150550010000014301000000809'; 
echo substr($key, 35, -1); 

?> 

을 그리고 결과는 권리 :이, 그것은 작동

00000080 

문제

하지만 (데이터베이스에서) 정수 변수에서이 키를 얻을. 결과는 null이며이 코드에서 얻은 것과 유사합니다.

<?php 

$key = 35110100840754000150550010000014301000000809; 
echo substr($key, 35, -1); 

?> 

결과는 빈 문자열입니다.

나는 (문자열) 캐스팅, SUBSTR처럼, 모든 노력을 ($ 키입니다. ""35, -1), 그것은 작동하지 않습니다.

누구에게 의견이 있습니까?

답변

3

데이터베이스가 정수 값을 반환하면 32 비트 bit 서버) 제한 사항. 35110100840754000150550010000014301000000809 way가 64 비트 서버의 최대 정수 값을 초과합니다. 플로트로 변환 될 수 있습니다.이 경우 플로팅 정확도가 떨어집니다.

는 데이터베이스 쿼리 문자열로 캐스팅 취득하고, 그 수는, PHP의 정수 할 것을 manual을보고 너무 큰

+1

+1입니다. – horatio

+0

당신은 완벽 해요! 고마워요! –

0

strval()이 작동 할 수 있습니다. PHP에서 문자열과 mysql을 다루는 관련 게시물을 확인하십시오 : Converting an integer to a string in PHP

+0

안녕하세요! 나는 (문자열) $ 키와 strval ($ 키) 캐스팅을 시도하고 그것은 작동하지 않습니다 ... : P –

+0

예, 당신의 경우에는 정수가 너무 큽니다. 그럴듯한 해결책은 –

1

문제 해결해야한다.

35110100840754000150550010000014301000000809의 경우 3.5110100840754E43과 같거나 약간의 숫자가 표시됩니다. 35 위치에서 시작하면 (문자열 끝에 도달하면 ...) 결과는 NULL이됩니다.

+0

당신 말이 맞아요!Mark Baker의 대답을 참조하십시오. 고맙습니다! :) –

1

substr 다음에 $ key를 인쇄하십시오. 함수 뒤에 번호가 이미 널린 것을 볼 수 있습니다. 정수의 범위는 -2147483648

2147483647에 문자열, strval() 또는 (문자열) $ 키

+0

안녕하세요 구스타보! 나는 캐스팅 (string) $ key와 strval ($ key)을 시도했지만 작동하지 않습니다 ... : P –

+0

하지만 범위 질문에 맞습니다! :) 고맙습니다! Brasil! –

0

루트 문제는 숫자가 변환되는 것입니다으로 변환하여 값의 배역을 적용하다 정수 값을 오버플로하기 때문에 할당 할 때 부동 소수점 수를 지정합니다.

관련 문제