2017-10-25 2 views
1

친구들. 내가 다음 코드를 한 :정수 함수 인수 변환

<?php 
function f(int $a) 
{ 
    return $a; 
} 

f("1a"); // get 1 and produce notice 
f("aaa"); // produce TypeError ; 

은 그 PHP가 http://php.net/manual/en/language.types.string.php#language.types.string.conversion 에 따라 int로 각각 나에게 1과 0을 제공하는 문자열 인수를 변환합니다,

내가 기대 PHP 7.1을 사용합니다. 하지만 다른 규칙이 있지만 문서에서 찾을 수는 없습니다. 이 규칙은 무엇이며 어디에 설명되어 있습니까? 고맙습니다.

답변

1

나는 당신이 타입 저글링 (php에 의한 타입 변환)에 대해 질문하고 있다고 믿는다. 당신이 현재 코드에 사용

echo (int) '1a'; //print 1 
echo (int) 'aaa'; //print 0 

function f($a) 
{ 
    return (int) $a; 
} 
echo f("1a"); // print 1 
echo f("aaa"); // print 0 ; 

방법은 함수를 인수 유형 선언입니다 : http://php.net/manual/en/language.types.type-juggling.php

를 보라 코드의 아래 부분에 모양을 가지고있다. 자세한 내용은 http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration을보십시오. PHP의 DOC에서

:

유형 선언은 함수는 매개 변수가 통화 시간에 특정 유형의 것을 필요로 할 수 있습니다. 주어진 값의 유형이 잘못된 경우 오류가 생성됩니다. PHP 5에서는 복구 가능한 치명적인 오류가 발생하지만 PHP 7에서는 TypeError 예외가 발생합니다.

형식 선언을 지정하려면 형식 이름 앞에 매개 변수 이름을 추가해야합니다. 매개 변수의 기본값이 NULL로 설정된 경우 NULL 값을 허용하도록 선언 할 수 있습니다.

+1

좋습니다. 주조 메커니즘이 standart PHP 유형 변환과 다릅니다 (유형 저글링). 고마워, @ Amen –