>백엔드 개발 >PHP 튜토리얼 >PHP에서 in_array 함수를 사용할 때의 문제점과 해결 방법

PHP에서 in_array 함수를 사용할 때의 문제점과 해결 방법

高洛峰
高洛峰원래의
2016-12-22 13:10:061174검색

먼저 수요 배경을 소개합니다:

송장 방법:

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 문제 및 해결 방법에 관한 것입니다. 질문이 있는 경우 메시지를 남겨서 소통할 수 있습니다.


PHP에서 in_array 함수를 사용할 때 발생하는 문제 및 해결 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.