잘못된 형식의 숫자 값이 있습니다.
DB에 추가 할 PHP 스크립트에 두 개의 날짜 (시작 및 종료)를 전달하는 양식이 있습니다. 이것을 확인하는 데 문제가 있습니다. 다음과 같은 오류가 계속 발생합니다.
잘못된 형식의 숫자 값이 있습니다.
이것은 내가 다음을 사용할 때
date("d",$_GET['start_date']);
그러나 많은 사이트에서 권장하는대로 strtotime () 함수를 사용하면 1970 년 1 월 1 일의 유닉스 타임 스탬프 날짜가 표시됩니다. 정확한 날짜를 얻는 방법에 대한 아이디어가 있습니까?
정수 여야하는 날짜 함수에 두 번째 인수로 문자열을 전달하기 때문입니다.
문자열 날짜 (문자열 $ format [, int $ timestamp = time ()])
영어 텍스트 날짜 / 시간 설명을 Unix 타임 스탬프 (정수) 로 구문 분석 하는 strtotime 을 사용해보십시오 .
date("d", strtotime($_GET['start_date']));
$_GET['start_date']
숫자가 아닙니다.하지만에서 지원하지 않는 날짜 형식 strtotime
입니다. strtotime 에 대해 실행 가능한 형식으로 날짜를 다시 형식화 하거나 explode / mktime 조합을 사용해야 합니다.
현재 받고있는 형식을 게시하기에 충분히 친절하다면 예를 추가 할 수 있습니다.
단순히 strtotime()
함수를 사용하여이 문제를 해결할 수 있습니다 .
date("d",strtotime($_GET['start_date']));
나는이 같은 상황에 부딪혔다 (내 경우에는 Drupal보기의 사용자 정의 PHP 필드에 날짜 값이 있음), 나를 위해 일한 것은 strtotime 대신 intval을 사용하여 값을 정수로 바꾸는 것이 었습니다. 기본적으로 타임 스탬프이기 때문입니다. 이지만 정수가 아닌 문자열 형식입니다. 분명히 모든 사람에게 해당되는 것은 아니지만 시도해 볼 가치가 있습니다.
이것은 나를 많이 도왔습니다.
$new_date = date_format(date_create($old_date), 'Y-m-d');
이것은 오래된 질문이지만이 메시지가 발생할 수있는 또 다른 미묘한 방법이 있습니다. 여기 문서에서 꽤 잘 설명 되어 있습니다.
이 scenerio를 상상해보십시오.
try {
// code that triggers a pdo exception
} catch (Exception $e) {
throw new MyCustomExceptionHandler($e);
}
그리고 MyCustomExceptionHandler
대략 다음과 같이 정의됩니다.
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage(), $e->getCode());
}
}
Exception
클래스가 생성자의 두 번째 매개 변수에 대한 숫자를 예상하고 있지만 PDOException
의 반환 유형을 $e->getCode()
문자열 로 동적으로 변경했을 수 있기 때문에 이것은 실제로 사용자 지정 예외 처리기에서 새 예외를 트리거 합니다.
이에 대한 해결 방법은 다음과 같은 사용자 지정 예외 처리기를 정의하는 것입니다.
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage());
$this->code = $e->getCode();
}
}
계산시 오류가 발생한 경우 값에 쉼표 (,)가 포함되어 있지 않은지 다시 확인하십시오. 값은 정수 / 부동 형식이어야합니다.
date_default_timezone_set ()을 사용하여 시간대를 설정해야합니다.
숫자 만 포함되어있는 경우 문자열 전달이 반드시 문제가되는 것은 아닙니다.
이것이 발생할 수있는 또 다른 이유는 전후에 공백이있는 경우입니다. 예 : "1557399276"
이 오류는 숫자 (영숫자)와 결합 된 문자를 사용하는 변수로 계산을 수행 할 때 발생합니다 (예 : 24kb, 886ab ...
다음 기능에 오류가 있습니다.
function get_config_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last) {
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $this->fix_integer_overflow($val);
}
응용 프로그램이 이미지를 업로드하지만 작동하지 않고 다음 경고가 표시되었습니다.
솔루션 : 이 intval()
함수는 영숫자 데이터가있는 변수의 정수 값을 추출하고 동일한 값을 가진 새 변수를 생성하지만 intval()
함수 를 사용하여 정수로 변환 합니다. 다음은 코드입니다.
function get_config_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
$intval = intval(trim($val));
switch($last) {
case 'g':
$intval *= 1024;
case 'm':
$intval *= 1024;
case 'k':
$intval *= 1024;
}
return $this->fix_integer_overflow($intval);
}
참고 URL : https://stackoverflow.com/questions/6136430/a-non-well-formed-numeric-value-encountered
'programing tip' 카테고리의 다른 글
진행 중입니다. (0) | 2020.08.13 |
---|---|
왜 float 값을 템플릿 매개 변수로 사용할 수 없습니까? (0) | 2020.08.13 |
명령 줄에서 JAR 파일을 실행하고 클래스 경로를 지정합니다. (0) | 2020.08.13 |
Maven을 사용하지 않고 Spring Framework jar를 어디에서 다운로드 할 수 있습니까? (0) | 2020.08.13 |
Create-React-App 기반 프로젝트에 글꼴을 추가하는 방법은 무엇입니까? (0) | 2020.08.13 |