【 PHP 】PHP8に入門してみた 59日目 PHPの基本 ( 演算子 大きく変わった計算ルール )

2022年10月15日

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

演算子

代数演算子

文字列の演算

PHPはバージョン8から文字列が混在した演算が「あるべき姿」になったようです。
私はバージョン8より前(PHP7.4以前)のことをよく知らないのでここはスルーすることにします😊

どんな挙動になるかだけ確認しておくことにします。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHPの基本</title>
</head>

<body>
    <?php
    // print命令は指定された文字列を表示するための命令です。
    $msg = 'こんにちは、変数の世界! <br />';

    print $msg;
    print 'こんにちは、皆さん! ';

    print '<br />';

    print '108' + '15';
    print '<br />';
    print '108' + '1.5XYZ';
    print '<br />';
    print '108' + 'XYZ10';      // ここでエラーが発生して処理が停止します。
    print '<br />';
    print '108' + '1.5XYZ10';
    print '<br />';
    print '108' + '1.5E1';
    print '<br />';
    print '108' + '0b11';
    print '<br />';
    print '108' + '010';
    print '<br />';
    print '108' + '0x1A';
    ?>
</body>

</html>

108 + XYZ10の部分でエラーになっていることが分かります。

該当部分をコメントアウトしてみます。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHPの基本</title>
</head>

<body>
    <?php
    // print命令は指定された文字列を表示するための命令です。
    $msg = 'こんにちは、変数の世界! <br />';

    print $msg;
    print 'こんにちは、皆さん! ';

    print '<br />';

    print '108' + '15';
    print '<br />';
    print '108' + '1.5XYZ';
    print '<br />';
    // print '108' + 'XYZ10';      // ここでエラーが発生して処理が停止します。
    print '<br />';
    print '108' + '1.5XYZ10';
    print '<br />';
    print '108' + '1.5E1';
    print '<br />';
    print '108' + '0b11';
    print '<br />';
    print '108' + '010';
    print '<br />';
    print '108' + '0x1A';
    ?>
</body>

</html>

一通り実行されたようですが「文字列内に数字以外の文字種」が含まれている場合は警告が出ています。
※ただし指数表現は除きます。

メモ

なぜ文字列なのに数値とみなすのでしょうか。私にとっては最大の謎です🤔

PHPPHP

Posted by raika@blog