【 PHP 】PHP8に入門してみた 65日目 PHPの基本 ( 演算子 分割代入 )

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

演算子

分割代入

分割代入は配列や連想配列に対してしようできる代入方法です。

分割代入は右オペランドに配列(連想配列)を定義し、左オペランドには「ブラケット[...]で括った変数群」を定義します。

ブラケットを用いた構文はPHP7.1から。これより以前のPHPではlist関数を使用します。

基本的な分割代入から高度な分割代入と様々な利用方法があります。

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

    // 基本的な分割代入
    $list = [1, 2, 3, 4, 5];
    [$a, $b, $c, $d, $e] = $list;
    print $a . ":" . $b . ":" . $c . ":" . $d . ":" . $e;
    print '<br />';

    // 右オペランドの要素数と左オペランドの要素数が一致しないと警告等がでます。
    [$a, $b, $c] = $list; // 左オペランドの要素数が不足(右オペランドの4,5の要素は無視されるだけです。)
    print $a . ":" . $b . ":" . $c;
    print '<br />';
    [$a, $b, $c, $d, $e, $g] = $list; // 左オペランドの要素数が多い(警告)
    print $a . ":" . $b . ":" . $c . ":" . $d . ":" . $e . ":" . $g;
    print '<br />';

    // 要素切り捨て
    [, $a,, $b, $c] = $list; // 要素の0番目と2番目をスキップ
    print $a . ":" . $b . ":" . $c;
    print '<br />';

    [$_, $a, $_, $b, $c] = $list; // 要素の0番目と2番目をスキップ($_というダミー変数を使用して分かりやすくしたバージョン)
    print $a . ":" . $b . ":" . $c;
    print '<br />';

    // 一部要素だけを指定して取得(配列バージョン)
    [1 => $a, 4 => $b] = $list;
    print $a . ":" . $b;
    print '<br />';

    // 一部要素だけを指定して取得(連想配列バージョン)
    $book = ['title' => '独習PHP', 'price' => '100円', 'color' => 'yellow', 'page' => 600];
    ['title' => $t, 'page' => $p] = $book;
    print $t . ":" . $p;
    print '<br />';

    // 入れ子(ネスト)された配列を分割(フラット化)
    $list = [1, 2, 3, [10, 20, 30]];
    [$a, $b, $c, [$d, $e, $f]] = $list;
    print $a . ":" . $b . ":" . $c . ":" . $d . ":" . $e . ":" . $f;
    print '<br />';

    // スワップの可能!
    $x = 15;
    $y = 30;
    [$y, $x] = [$x, $y];
    print $x . ":" . $y;
    print '<br />';
    ?>
</body>

</html>

雑に結果を表示してます。

メモ

分割代入の機能は妙に力が入っているように感じます。

スワップはすごく便利ですね。

PHPPHP

Posted by raika@blog