【 PHP 】PHP8に入門してみた 67日目 PHPの基本 ( 演算子 比較演算子で文字列混在で混乱 )

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

演算子

比較演算子での文字混在

PHPではなんと文字列と数値を比較できるそうです。

「数字の文字列」はできる限り数値型の文字列に変換されて比較が行われます。
「2,8,16進数」の文字列は残念ながら期待した結果にはなりません。

純粋な数字の文字列 == 純粋ではない数字の文字列は例外で、両オペランドとも文字列とみなされるため文字列比較が行われます。

<!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 />';

    var_dump('3.14' == 3.14000);
    var_dump('3.14E2' == 314);
    var_dump('0x10' == 16);
    var_dump('010' == 8);
    var_dump('0b11' == 3);
    var_dump('13xyz' == 13);    // PHP8ではfalse
    var_dump('X' == 0);         // PHP8ではfalse
    var_dump('3.14' == '3.14000');  // 純粋 x 純粋
    var_dump('3.14E2' == '314');    // 純粋 x 純粋
    var_dump('13xyz' == '13');    // 純粋 x 比純粋
    ?>
</body>

</html>

結果です。

メモ

開発の現場でそんなことしないような気がしますが・・・。

PHP8から挙動が変わっている比較処理がありますね。
注意せねば。

PHPPHP

Posted by raika@blog