【 PHP 】PHP8に入門してみた 167日目 PHPの基本 ( ユーザー定義関数 親スコープの変数引継ぎ)

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

ユーザー定義関数

親から変数を引き継ぐ use

クロージャーでは、親から(自身が所属するスコープから)変数を引き継ぐ場合はuseを使用します。

globalとは違い、直属の親から引き継ぎます。

<!DOCTYPE html>

<html>

<head>
    <meta charset="UTF-8" />
    <title>こんにちは!</title>
    <!-- Bootstrapを有効化 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
</head>

<body>
    <?php
    function myArrayWalk(array $array, callable $func): void
    {
        foreach ($array as $key => $value) {
            $func($value, $key);
        }
    }

    // 結果を求めるための関数
    $data = [100, 50, 10, 5];
    // 結果値を格納するための変数
    $result = 0;
    myArrayWalk($data, function ($value, $key) /*★*/ use (/*参照渡しの&!*/&$result) {
        $result += $value;
    });

    print "合計値:{$result}";
    ?>
</body>

</html>

メモ

え?デフォルトでは引き継げないの?

PHPPHP

Posted by raika@blog