PHPは、常に値の「現在のタイプを」知っている必要があります。この「現在のタイプ」は、すべての値とともに使用されるメタデータ(列挙型)です。あなたは明らかにタイプで常にリテラル値を、使用して変数を初期化しているので、あなたのコード例で
は、キャストは無意味です:
$s = "foo";
echo is_string($s); // 1
$s = (string)"foo";
echo is_string($s); // also 1
同じ整数と配列のために行きます。
あり、変数の型は、あなたが一目で想像するより他のものになるだろう少なくとも一つのケースです:キャストを使用して$i
整数になるだろう。この場合
$i = PHP_INT_MAX + 1; // or use something like 999999999999
echo gettype($i); // "double"!
が、それは希望また、その値を変更します。これは行方不明のキャストに起因するのではなく、数字はPHPでどのように扱われるかをのアーティファクトされないが、もちろん
$i = (int)(PHP_INT_MAX + 1);
echo gettype($i); // "integer"
echo $i; // a very large negative number -- what?!?
。結論は明らかです:リテラルで初期化するときにキャストを使用することに意味がありません。
タイプXとして使用する変数を、異なるタイプY(または未知のタイプ)の値で初期化する場合は、明示的なキャストを使用する理由があります。その変数は今後使用される予定です。しかし、利益を過大評価してはいけません。この情報は人間の消費のためだけのものです。変数を別の型として使用しようとすると、PHPは通常の型変換を自動的に行います。
出典
2013-07-03 10:32:51
Jon
本当に素敵な答え+1 – Robert