Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

0이 전달되면 PHP의 in_array가 true를 반환하는 이유는 무엇입니까?

<시간/>

In_array가 True를 반환하는 이유는 문자열에서 숫자로의 변환 때문일 수 있습니다. 문자열이 함수에 전달되면 검색해야 하는 값인 0이 반환됩니다.

PHP는 요소를 비교할 때 ===대신 ==를 사용하는 느슨한 저글링을 사용합니다. 따라서 유형이 아닌 값이 비교됩니다.

또 다른 이유는 변수 유형이 코드 컨텍스트에서 처리된다는 것을 의미하는 유형 저글링입니다.

예를 들어 부동 소수점 값이 변수에 할당되면 부동 소수점 값이 됩니다. 문자열이 정수로 캐스트될 때 작동합니다.

이러한 종류의 동작을 방지하기 위해 세 번째 매개변수를 전달할 수 있습니다. 이 매개변수는 데이터를 엄격 모드로 비교하며, 여기서 값과 유형을 비교합니다.

다음은 문자열이 전달될 때 함수가 작동하는 방식입니다 -

예시

echo intval("Hello");

출력

이것은 다음과 같은 출력을 생성합니다 -

0