프로그래머 팀에서 프로그램을 만들고 있는데 특정 시스템에 대해 배열을 사용한다고 결정되었습니다. 대부분의 용도에서 배열의 모든 인덱스가 올바르게 설정되고 정의되지 않은 인덱스가 발생할 수 있습니다. isset() 또는 array_key_exists()를 사용하면 코드가 너무 느려집니다 (if 및 if가 많이 필요하므로 if가 느리고 if가 너무 빠름) too many (너무 많은 코드와 반복적 인 코드)이므로 옵션이 아닙니다. 이미 set_error_handler() 함수를 발견했지만 최선의 옵션인지 여부도 알 수 없습니다.문제의 일반적인 해결사를 만드십시오.이 프로그램에 대한 배열의 정의되지 않은 색인
주요 대상 : 특정 배열에서 정의되지 않은 색인이 발생하면이를 잡아서 해결해야하며 (상황을 로그에 기록해야 함) 스크립트는 아무 일도 일어나지 않아야합니다. 그렇게하는 가장 좋은 방법은 무엇입니까?
참고 : 다른 오류 또는 경고가 발생하면 PHP가 익숙해 진 것처럼 처리해야하므로 필자는이 이름으로 해당 배열을 만든 것만 원합니다.
난 당신이 Exception
의
try{
if(!isset($values[23])) throw new Exception("index not defined");
// do dangerous stuff here
}catch(Exception $ex){
//handle error
}
그러나, 이상적인 솔루션이 결코 처음부터 발생하지 있는지 확인하는 것입니다 사용해야합니다 내가 분명히 enugh에게
는 –
"의 속도가 느린 경우"는 isset은 응용 프로그램이 그래서, 난 당신이 다른 문제를 생각하지 못할입니다 느리게 만드는 경우가 무슨 뜻인지 나도 몰라 ... –
이 경우 "의 속도가 느린 경우"당신이 무슨 뜻인지 나도 몰라 그 다음보기를 위해, 그것이 점프를 필요로하기 때문에 본질적으로 느리다. 그리고 6 - 9 대신에 200-500 ifs를 사용하면 PHP 스크립트에서 정말 눈에 @니다. @JonStirling 사용할 수 없지만 눈에 띄게 느립니다. 동시에 400-700 명의 사람들이 사용한다면 큰 문제가 될 수 있습니다. – brunoais