PHP를 사용하는 개발 과정에서 개발자는 종종 일부 경고 및 오류 메시지에 직면합니다. 그중에서도 일반적인 경고는 "통지 : 잘 형성되지 않은 숫자 값이 발생합니다"입니다. 이 경고는 일반적으로 문자열을 숫자 값으로 변환하려고 할 때 발생합니다. 특히 숫자 형식이 기대치와 일치하지 않는 경우. 이 기사는이 문제의 원인을 구문 분석하고 유사한 오류를 피하는 데 도움이되는 솔루션을 제공합니다.
이 경고는 일반적으로 다음과 같은 상황에서 발생합니다.
Error example:
$ num1 = "10"; $ num2 = "5"; // 오류 예제 $ 결과 = $ num1 + $ num2;
PHP는 약한 유형 언어이므로 문자열을 자동으로 숫자 값으로 변환하려고합니다. 그러나 문자열을 숫자 값으로 올바르게 변환 할 수 없으면 경고가 나타납니다. 이 문제를 해결하기 위해 intval () 함수를 사용하여 문자열을 정수로 명시 적으로 변환 할 수 있습니다.
Correct example:
$ result = intval ($ num1) + intval ($ num2);
Error example:
$ datestring = "2021-01-15"; // 오류 예제 $ timestamp = strtotime ($ datestring);
이 예에서는 날짜 문자열이 올바르게 형식화되지만 특정 시간 정보가 없기 때문에 PHP는 현재 시간의 타임 스탬프로 변환하여 결과가 잘못되었습니다. 해결책은 날짜 문자열 다음 "00:00:00"과 같은 시간 부분을 추가하는 것입니다.
Correct example:
$ timestamp = strtotime ( "$ datestring 00:00:00");
Error example:
$ numberstring = "123abc"; // 오류 예제 $ 번호 = intval ($ numberstring);
문자열에 숫자가 아닌 문자가 포함 된 경우 PHP는 숫자로 변환 할 수 없으므로 경고가 발생합니다. 이를 피하려면 preg_replace () 함수를 사용하여 숫자가 아닌 문자를 필터링 할 수 있습니다.
Correct example:
$ number = preg_replace ( "/[^0-9]/", "", $ numberstring);
PHP에서 "통지 : 잘 형성되지 않은 숫자 값"경고의 이유는 일반적으로 불규칙한 형식의 문자열을 숫자 유형으로 변환하려는 시도 때문입니다. 이러한 문제는 intval () 또는 preg_replace () 와 같은 적절한 기능을 사용하여 명시적인 변환으로 피할 수 있습니다. 타임 스탬프 변환을 처리 할 때 날짜 문자열이 완료되었는지 확인하고 시간 부분이 포함되면 경고를 효과적으로 해결할 수 있습니다.