今日、最初の文字を含む文字列に整数が含まれている場合、その値を別の整数変数に追加できることを非常に疑問に思いました。
$a = 20;
$b = "5doller";
$a+=$b;
echo $a;
これがどのように発生するかを説明できる人はいますか?「dollar5」のような文字列がある場合、それは追加されません。
PHP は強く型付けされていません。
文字列の最初の文字は整数であり、+ 演算子を使用しているため、5 ドルを int として解釈し、25 を返します
例: http://en.wikipedia.org/wiki/Strong_typing#Example:
PHP には、コンテキストに応じて実行時にデータの型を自動変換する型変換哲学があります。これには長所と短所があるかもしれません。それに反対する人もいれば、大丈夫だと考える人もいます (人生のほとんどすべての場合と同様)。
その動作の詳細については、php のドキュメントを参照してください: http://www.php.net/manual/en/language.types.type-juggling.php
string
算術演算子 "+" (最初の文字 "5" を検出する) を使用すると、これを楽にしようとしますがinteger
、適切に行わないと奇妙な動作につながります。
これは型がないという意味ではなく、 $b は実際には a でありstring
、実行時に変換しようとするだけですが、 $b は依然として a のままstring
です。
これを確認したり、奇妙な動作を防止したりするには、php ネイティブ関数を使用して型を確認します。
$a = 20;
$b = "5doller";
if(is_integer($b)){
$a+=$b;
} elseif (is_string($b)) {
$a.=$b;
}
echo $a;
または、変数の型を返す which を使用gettype()
して、 switch case などを実行することもできます。しかし、私の意見では、それは過剰なコーディングになると思います。常識を働かせて注意してください。通常は問題ありません。