이번에는 in_array의 암시적 변환을 사용하는 방법과 in_array의 암시적 변환을 사용할 때 어떤 주의사항이 있는지 알아보겠습니다.
Question
오늘 인터페이스를 작성할 때 많은 수의 기본 정보 매개변수를 전달해야 합니다. 매개변수는 int와 string 두 가지 유형이므로 확인의 편의를 위해 모든 매개변수를 넣을 예정입니다. , in_array(0, $param)을 사용하여 int 매개변수가 0인지 확인한 다음, 문자열 매개변수가 비어 있는지 별도로 확인합니다.
if(in_array(0, $param) || $param['img'] == '') { $this->errorCode = 10030; $this->errorMessage = '参数不正确'; return false; }
단, self 동안 -테스트 결과, 올바른 매개변수가 전달되면 잘못된 매개변수가 반환되는 것으로 나타났습니다. 팁! ! !
이유
이 상황은 정확히 in_array가 문제를 일으키기 때문에 발생합니다. in_array(search,array)는 배열의 각 값을 검색과 비교하는 것과 동일합니다. 내 $param 배열에 int 매개변수도 있습니다. 문자열과 int를 비교하는 것과 동일한 문자열 매개변수. PHP의 암시적 변환 규칙:
Non-number String정수와 비교하면 문자열은 자동으로 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는 search의 데이터가 배열의 값과 동일한 유형인지 확인하기 위해 세 번째 매개변수 true를 추가하여 해당 요소가 배열에 존재할 때만 함수를 사용할 수 있도록 합니다. 데이터 유형이 주어진 값과 동일한 경우에만 True 배열이 반환됩니다.
위에 제시한 비즈니스의 경우 더 엄격하게 int 유형 데이터를 배열에, 문자열을 배열에, 두 개의 데이터를 저장할 수 있습니다. 위의 문제가 발생하지 않도록 데이터 검증을 수행하세요
이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어의 다른 관련 기사를 참조하세요. 웹사이트!
추천 도서:
위 내용은 in_array의 암시적 변환을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!