오늘 인터페이스를 작성할 때 많은 수의 기본 정보 매개 변수를 전달해야 합니다. 매개 변수는 int와 string의 두 가지 유형이므로 확인의 편의를 위해 모든 매개 변수를 배열에 넣을 계획입니다. in_array(0 , $param) 을 사용하여 int 매개변수가 0인지 확인한 후 string 매개변수가 비어 있는지 별도로 확인합니다. 샘플 코드는 다음과 같습니다.
if(in_array(0, $param) || $param['img'] == '') { $this->errorCode = 10030; $this->errorMessage = '参数不正确'; return false; }
단, 셀프 테스트 중에 올바른 매개변수가 전달되면 매개변수가 올바르지 않다는 프롬프트가 반환되는 것으로 나타났습니다. ! !
이유
이 상황은 정확히 in_array가 문제를 일으키기 때문에 발생합니다. in_array(search,array)는 배열의 각 값을 검색과 비교하는 것과 동일합니다. 내 $param 배열에 int 매개변수도 있습니다. 문자열과 int를 비교하는 것과 동일한 문자열 매개변수. PHP의 암시적 변환 규칙:
숫자가 아닌 문자열과 정수를 비교하면 문자열은 자동으로 int(0)으로 변환됩니다.
다음 예는 우리의 명령문을 확인합니다.
<?php $a = (int)'abc'; var_dump($a); //int(0) $c = array(0,1,2,3); if(in_array('abc', $c)) { echo 'exist'; } else { echo 'not exist'; } //exist
Solution
in_array는 검색된 데이터의 유형과 배열의 값이 동일한지 확인하는 데 사용되는 세 번째 매개변수인 true를 추가하므로, 다음과 같은 경우에만 함수를 사용할 수 있습니다. 배열에 요소가 존재합니다. 데이터 유형이 주어진 값과 동일한 경우에만 true를 반환합니다
위에 제시한 비즈니스의 경우 더 엄격하게 int 데이터를 배열에, 문자열을 배열에 저장하고 데이터 교정을 수행할 수 있습니다. 이렇게 하면 위의 문제가 발생하지 않습니다
관련 권장 사항:
JavaScript의 암시적 변환 및 요약의 몇 가지 예에 대해
암시적 변환을 사용하는 방법은 무엇입니까? 암시적 변환 예제 사용법 요약
위 내용은 PHP in_array의 암시적 변환 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!