다음은 배열에 있는 변수를 전역 변수로 import하기 위해 제가 커스터마이징한 방법입니다. 그러나 주어진 배열과 동일한 키 이름을 가진 변수가 전역 변수에 이미 존재하는지 여부를 판단할 때 @가 억제되더라도 set_error_handler를 제거하지 않으면 여전히 오류가 보고됩니다. 이 문제를 해결하는 방법은 무엇입니까? ?
<code>ini_set('display_errors' , 'On'); error_reporting(E_ALL); // 设置错误处理函数后, ini_set() && error_reporting() 这两个函数会失效,这是怎么回事(次要)?? set_error_handler('test'); function test($err_level , $err_msg , $err_file , $err_line , $err_ctx){ echo '发生错误了!'; echo "\r\n"; echo "\r\n"; } function extract_global(array $arr = array()){ if (empty($arr)) { return ; } foreach ($arr as $key => $val) { // 这个地方怎么都抑制不了错误提示! // 如果把 set_error_handler 这个去掉,就可以抑制错误 // 怎么解决这个问题(主要)?? if (!is_null(@$GLOBALS[$key])) { trigger_error('已存在全局变量: ' . $key . '!' , E_USER_ERROR); exit; } $GLOBALS[$key] = $val; } } $arr = array( 'name' => 'programmer' , 'hobby' => 'play computer game' ); extract_global($arr); print_r($name); print_r("\r\n"); print_r($hobby); </code>
다음은 배열의 변수를 전역 변수로 가져오기 위해 제가 사용자 정의한 사용자 정의 방법입니다. 그러나 주어진 배열과 동일한 키 이름을 가진 변수가 전역 변수에 이미 존재하는지 여부를 판단할 때 @가 억제되더라도 set_error_handler를 제거하지 않으면 여전히 오류가 보고됩니다. 이 문제를 해결하는 방법은 무엇입니까? ?
<code>ini_set('display_errors' , 'On'); error_reporting(E_ALL); // 设置错误处理函数后, ini_set() && error_reporting() 这两个函数会失效,这是怎么回事(次要)?? set_error_handler('test'); function test($err_level , $err_msg , $err_file , $err_line , $err_ctx){ echo '发生错误了!'; echo "\r\n"; echo "\r\n"; } function extract_global(array $arr = array()){ if (empty($arr)) { return ; } foreach ($arr as $key => $val) { // 这个地方怎么都抑制不了错误提示! // 如果把 set_error_handler 这个去掉,就可以抑制错误 // 怎么解决这个问题(主要)?? if (!is_null(@$GLOBALS[$key])) { trigger_error('已存在全局变量: ' . $key . '!' , E_USER_ERROR); exit; } $GLOBALS[$key] = $val; } } $arr = array( 'name' => 'programmer' , 'hobby' => 'play computer game' ); extract_global($arr); print_r($name); print_r("\r\n"); print_r($hobby); </code>
오류 핸들러는 오류를 수집하는 데 사용됩니다. 특정 오류를 처리하지 않으려면 오류 핸들러에서 해당 오류를 건너뛰면 됩니다.