PHP は大まかに型付けされた言語ですが、PHP 変数のデフォルトのデータ型は何ですか? その暗黙的なデータ型は何ですか?
4 に答える
PHP の変数は動的で、内部のデータに応じて変化します。したがって、デフォルトではデータ型はありません。
変数のマニュアルから:
PHP で変数を初期化する必要はありませんが、非常に良い方法です。初期化されていない変数には、使用されるコンテキストに応じた型のデフォルト値があります。ブール値のデフォルトは FALSE、整数と浮動小数点数のデフォルトはゼロ、文字列 (echo で使用されるなど) は空の文字列として設定され、配列は空の文字列になります。配列。
だから、それらはあなたがそれらから作るものです。
OP は、PHP が緩く型付けされた言語であることを理解しているため、初期化された変数の型は保持するデータによって決定されます。そのように読むと、質問は次のようになります。初期化されていない変数の型は何ですか? - 答えはnull
PHP では通常、初期化せずに変数を宣言することはできません。次のようなものはありません。
Dim SomeVar
したがって、「デフォルト」のデータ型を確認する唯一の方法は、設定されていない変数またはデータを保持していないクラス メンバーのいずれかを評価することです。
1: 設定されていない変数
echo $someVar === null ? "NULL" : "NOT NULL"; //outputs NULL (and triggers a Warning)
2: データを保持しない宣言されたクラス メンバー
class Test {
public static $someVar;
}
var_dump(Test::$someVar); // outputs NULL
したがって:
初期化された変数の型は、それが保持するデータによって決定されます
初期化されていない変数の型は
null
タイプジャグリング
PHP は、変数宣言で明示的な型定義を必要としません (またはサポートしません)。変数のタイプは、変数が使用されるコンテキストによって決まります。つまり、変数 $var に文字列値を代入すると、$var は文字列になります。$var に整数値を代入すると、整数になります。
PHP の自動型変換の例は、加算演算子 '+' です。いずれかのオペランドが float の場合、両方のオペランドが float として評価され、結果は float になります。それ以外の場合、オペランドは整数として解釈され、結果も整数になります。これはオペランド自体の型を変更しないことに注意してください。唯一の変更点は、オペランドの評価方法と、式自体の型です。
ソース: http://www.php.net/manual/en/language.types.type-juggling.php