【 PHP 】PHP8に入門してみた 54日目 PHPの基本 ( 配列の補足 注意点 )

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

配列

キーの値は強制的に整数/文字列 に変換されてしまう

PHPではキーとしてオブジェクトを使用することはできないようです。
使用したとしても内部的に整数もしくは文字列に変換されているとのこと…
「内部的に」とあるので使用する側ではそんなに気にしなくてもよいのでしょうか?

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

    $date = new DateTime();
    $data01 = [
        '文字です。' => 0,    // 文字列
        '07' => 1,           // 文字・・・列
        0.1 => 3,            // 小数点
        true => 4,           // bool値
        null => 5,           // null値
        $date => 6,           // 日付型!?
    ];

    print_r($data01);
    print '<br />';
    ?>
</body>

</html>

$dateの部分でエラーとなってしまいました。

$dateの部分を削除すると表示されましたが小数点をキーとして使用した部分は残りました。

メモ

  • 妥当な数字文字列は整数値に変換される(07は妥当じゃないので’07’のまま)
  • 小数点は切り捨てられる(そしてデバッグ実行で怒られる。)
  • true / false 値は1 / 0に変換される
  • null値は空文字列に変換される!
  • 配列やオブジェクトをキーにするFatal error...というエラーになる

覚えておかないと「キー重複による不具合」でハマるかもしれないです。
キーとしてオブジェクトを使いたい場面はよくあるのではないかと思うのですが残念です。

PHPPHP

Posted by raika@blog