演算の際の型変換

PHP では値に型が存在しますが、必要に応じて自動的に型変換が行われることがあります。例えば数値と文字列を結合したり、整数と浮動小数点数の四則演算のような場合でも、 PHP は自動的に適切な型へ変換して演算を実行します。ここでは PHP で異なる型の値を演算する場合の型変換のルールについて解説します。

数値に対する演算子の型変換

最初に整数と浮動小数点数の演算の際に行われる型変換についてです。

次の例を見てください。

3 + 2.4 = 5.4
1.72 + 7 = 8.72

このように「整数 + 浮動小数点数」や「浮動小数点数 + 整数」のように整数と浮動小数点数との四則演算が行われる場合には、まず整数が浮動小数点数に変換されてから演算が行われます。演算の結果も当然浮動小数点数となります。

次に数値と文字列の値を加算したり減算したりした場合です。数値が記述されることを期待される演算子の値として文字列が記述された場合、次のように変換されます。

文字列の先頭に整数や浮動小数点数などがある場合は、文字列は先頭からの数値の部分の数値として変換されます。

'320yen' + 100 = 420
'1.02パーセント' - 0.1 = 0.92

ただ実際に試してみると「Warning: A non-numeric value encountered」が発生します。

文字列が数字で始まっていない文字列と数値に対して四則演算を行うと「Fatal error: Uncaught TypeError: Unsupported operand types: string + int」というエラーとなりました。

'こんにちは' + 1
'year2027' - 2

文字列の結合の型変換

結合演算子(.)を使用すると文字列を結合することができます。

'ABC' . 'DEF' = 'ABCDEF'

文字列に対して数値など他の型の値を結合しようとすると、文字列に変換されてから結合されます。

'ABC' . 10 = 'ABC10'
'R=' . 3.7 = 'R=3.7'
サンプルコード

では簡単なプログラムで試してみます。

<?php
echo "5 + 2.4 = ", 5 + 2.4, "\n";
echo "3.0 - 1 = ", 3.0 - 1, "\n";
echo "3 . \"丁目\" = ", 3 . '丁目';

作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。

php sample.php

演算の際の型変換

整数と浮動小数点数の四則演算、および文字列と数値の連結の場合を試してみました。なお 2 番目の演算で結果として 2 と表示されていますが、整数と浮動小数点数の演算は結果として浮動小数点数になるので 2 と表示されていますが型は浮動小数点数です。

もう一つサンプルを試してみます。

<?php
echo "10 + \"8yen\" = ", 10 + "8yen";

作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。

php sample.php

演算の際の型変換

数値と文字列に対して加算を行ったサンプルです。文字列は先頭から数字で始まっているので、文字列を数値と見なして演算は行われていますが、「Warning: A non-numeric value encountered」が発生しています。

-- --

PHP で異なる型の値を演算する場合の型変換のルールについて解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。