【 PHP 】PHP8に入門してみた 57日目 PHPの基本 ( 型変換 注意点 )

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

型変換

文字列から数値の型キャスト

文字列から数値にキャストする場合、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((int)'0b11');      // ???
    var_dump((int)'0777');      // ???
    var_dump((int)'0xFF');      // ???
    var_dump(bindec('0b11'));   //  2進数文字列を10進数に変換します
    var_dump(octdec('0777'));   //  8進数文字列を10進数に変換します
    var_dump(hexdec('0xFF'));   // 16進数文字列を10進数に変換します
    var_dump((int)'1E4');       // 指数表現は問題なし
    var_dump((float)'1E4');     // 問題なし
    ?>
</body>

</html>

X進数をキャストした値に注目します。

メモ

文字列から数値のキャストではできるだけ左から数値変換可能な位置まで数値に変換します。

2進数や8進数、16進数は専用の関数が用意されているのでこれらを使用すると意図した数値に変換できます。
ただのキャストではうまくいきません。

PHPPHP

Posted by raika@blog