3
1

More than 3 years have passed since last update.

PHPで文字列と数値を「足す」もしくは「連結」するとどうなる?の話

Last updated at Posted at 2020-11-11

本題に入る前に

本題に入る前に前提知識として話しておきたいことがあります。

本記事作成時のPHPのバージョン

php -v

// => PHP 7.3.9 

PHPの文字列

phpで変数に文字列を代入して表示する際

<?php
$hoge = "Hello PHP";
echo $hoge;             // Hello PHP

このように書いていきますよね。

文字列の連結

文字列の連結は

<?php
$hoge1 = "Hello";
$hoge2 = "PHP";
$hoge3 = $hoge1 . $hoge2;
echo $hoge3;             // HelloPHP

このようにやっていきます。

PHPの数値

同じように数値も

<?php
$number = 1;
echo $number;             // 1

このように書いていきますよね。

数値の連結

数値の連結は以下のようにやります。

<?php
$number1 = 1;
$number2 = 4;
$number3 = $number1 . $number2;
echo $number3;             // 14

数値なので+を使うとどうなるか

<?php
$number1 = 1;
$number2 = 4;
$number3 = $number1 + $number2;
echo $number3;             // 5

シンプルに足し算しています。

本題

ではここからが本題です。

PHPで文字列と数値を足すとどうなると思いますか?


そんなのエラーになるに決まっているだろ!!

そう私は思っていました。

エラーが起きない!!


まさかのエラーは起きずでした😳😳

試したパターン


足す
  • 文字列と数値を足す
  • 文字列の前に数字を入れてみる
  • 文字列の途中もしくは後ろに数値を入れてみる
連結
  • 文字列と数値を連結
  • 文字列の前に数字を入れてみる
  • 文字列の途中もしくは後ろに数値を入れてみる

文字列と数値の足し算

1. 文字列と数値を足す

まずは足し算からやってみましょう

<?php
$hoge1 = "Hello";
$number1 = 1;
$hoge2 = $hoge1 + $number1;
echo $hoge2;             

さて結果は??

1

となります😁

2. 文字列の前に数字を入れてみる

次に文字列の前に数値を入れてみました。

<?php
$hoge1 = "3Hello";
$number1 = 1;
$hoge2 = $hoge1 + $number1;
echo $hoge2;            

結果は?

4

どうやら文字の方は0として扱われて3 + 1の計算になっているようです。

3. 文字列の途中もしくは後ろに数値を入れてみる

<?php
$hoge1 = "He3llo";
$number1 = 1;
$hoge2 = $hoge1 + $number1;
echo $hoge2;
<?php
$hoge1 = "Hello3";
$number1 = 1;
$hoge2 = $hoge1 + $number1;
echo $hoge2;     

いずれも結果は

1

となります。


文字列と数値の連結

1. 文字列と数値を連結

まずは足し算からやってみましょう

<?php
$hoge1 = "Hello";
$number1 = 1;
$hoge2 = $hoge1 . $number1;
echo $hoge2;             

さて結果は??

Hello1

となります😁

2. 文字列の前に数字を入れてみる

次に文字列の前に数値を入れてみました。

<?php
$hoge1 = "3Hello";
$number1 = 1;
$hoge2 = $hoge1 . $number1;
echo $hoge2;            

結果は?

3Hello1

となります。😁

3. 文字列の途中もしくは後ろに数値を入れてみる

<?php
$hoge1 = "He3llo";
$number1 = 1;
$hoge2 = $hoge1 . $number1;
echo $hoge2;
<?php
$hoge1 = "Hello3";
$number1 = 1;
$hoge2 = $hoge1 + $number1;
echo $hoge2;     

いずれも結果は

He3llo1

となります。😁

なぜ??

別の言語でもみてみる

JavaScript

      let a = 1;
      let b = 2;
      let c = a + b;
      console.log(c);

      let d = 1;
      let e = "アイウエオ";
      let f = d + e;
      console.log(f);

      let g = 1;
      let h = "22アイウエオ";
      let i = g.h;
      console.log(i);

コンソール結果は以下のようになりました。
スクリーンショット 2020-11-12 3.33.44.png

javaScriptでは+で文字列の連結を行い、.で足し算などを行うので定義されていないという文言が出ております。

結論

これはPHPの仕様によるものらしい。
いろいろ調べたところ、PHPでは厳密な型を指定していないので状況に応じて、型変換が処理時に行われるようです。

実戦で役にたたなさそうですが、プログラミングを楽しむ。PHPを楽しむ。より理解するという意味でこの記事を書かせていただきました。

長くなってしまいましたが、みていただきありがとうございます。

参考サイト

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1