>  기사  >  백엔드 개발  >  PHP in_array의 암시적 변환 예에 대한 자세한 설명

PHP in_array의 암시적 변환 예에 대한 자세한 설명

小云云
小云云원래의
2018-03-09 10:08:051249검색

오늘 인터페이스를 작성할 때 많은 수의 기본 정보 매개 변수를 전달해야 합니다. 매개 변수는 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)&#39;abc&#39;;
  var_dump($a); //int(0)

  $c = array(0,1,2,3);
  if(in_array(&#39;abc&#39;, $c)) {
    echo &#39;exist&#39;;
  } else {
    echo &#39;not exist&#39;;
  } //exist

Solution

in_array는 검색된 데이터의 유형과 배열의 값이 동일한지 확인하는 데 사용되는 세 번째 매개변수인 true를 추가하므로, 다음과 같은 경우에만 함수를 사용할 수 있습니다. 배열에 요소가 존재합니다. 데이터 유형이 주어진 값과 동일한 경우에만 true를 반환합니다

위에 제시한 비즈니스의 경우 더 엄격하게 int 데이터를 배열에, 문자열을 배열에 저장하고 데이터 교정을 수행할 수 있습니다. 이렇게 하면 위의 문제가 발생하지 않습니다

관련 권장 사항:

JavaScript의 암시적 변환 및 요약의 몇 가지 예에 대해

암시적 변환을 사용하는 방법은 무엇입니까? 암시적 변환 예제 사용법 요약

자바스크립트 암시적 변환에 대한 자세한 설명

위 내용은 PHP in_array의 암시적 변환 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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