2017-10-25 8 views
1

フレンド。 は、私は次のコードしている:私は期待PHP 7.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を与えるために文字列引数を変換します。 しかし、別のルールがあるようですが、私はドキュメントで見つけることができません。 このルールとは何ですか?それはどこに記述されていますか?ありがとうございました。

答えて

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

私は理解していますが、鋳造機構はスタンダードなPHPタイプキャスティング(タイプジャグリング)とは異なります。ありがとう、@クエンタアメテタ –