먼저 수요 배경을 소개합니다:
송장 방법:
0=기부(이유, 역사적 이유는 묻지 마세요)
1=배송 일치
2=요청
3=전자 송장
이제 사용자가 제출한 데이터를 확인해야 합니다.
php;auto-links:false;">if(!in_array($_POST['invoice_action'], array(0,1,2,3))){ throw new Exception('请选择正确的发票方式'); }
이때 문제가 발생하는데 $_POST['invoice_action'] 값이 전혀 존재하지 않는데 왜 예외가 발생하지 않는 걸까요?
이것이 함정인 것으로 확인되었습니다.
이 코드 세트를 보세요:
echo in_array('', array(0)) ? 1 : 0; // 结果:1 echo in_array(null, array(0)) ? 1 : 0; // 结果:1 echo in_array(false, array(0)) ? 1 : 0; // 结果:1
이렇게 큰 구덩이를 우회하거나 채워야 할까요? 방법 1: in_array는 세 번째 매개변수를 지원하여 데이터 유형 감지를 강제합니다
echo in_array('', array(0), true) ? 1 : 0; // 结果:0 echo in_array(null, array(0), true) ? 1 : 0; // 结果:0 echo in_array(false, array(0), true) ? 1 : 0; // 结果:0방법 2: 여전히 데이터 유형 방향에서 배열의 0을 문자열로 변경합니다.
echo in_array('', array('0'), true) ? 1 : 0; // 结果:0 echo in_array(null, array('0'), true) ? 1 : 0; // 结果:0 echo in_array(false, array('0'), true) ? 1 : 0; // 结果:0요약 위 내용은 in_array 함수를 사용할 때 발생하는 PHP 문제 및 해결 방법에 관한 것입니다. 질문이 있는 경우 메시지를 남겨서 소통할 수 있습니다.