【 PHP 】PHP8に入門してみた 122日目 PHPの基本 ( 組み込み関数 配列要素を1つずつ処理 その2 )

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

組み込み関数

foreach的な?でも違う高度な関数

array_walk関数でwalk対象の値を書き換える。

array_wakl関数を使えばwalk対象の要素を書き換えることができます。
Javaではこんな芸当できないような気がします。

<!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

    $keys = ['十', '百', '千', '万', '億', '兆', '京', '垓', '𥝱', '穣', '溝', '澗', '正', '載', '極', '恒河沙', '阿僧祇', '那由他', '不可思議', '無量大数'];
    $data = ['那由他', '京', '垓', '億', '無量大数'];

    array_walk($data, function (/*アンパサンドを付けるのがポイント→*/&$value) {
        $value = "すごいぞ${value}!";
    });

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

</html>

 

array_walk_recursiveを使えば配列のネスト(入れ子)も処理できる

ネストされた配列だってarray_walk_recursiveを使えば簡単に処理できます!

<!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

    $sum = 0;
    $count = 0;
    $data = [5, 1, [10, -3]];

    // 配列内の要素を順に加算&カウント
    array_walk_recursive($data, function ($value) use (&$sum, &$count) {
        $sum += $value;
        $count++;
    });

    $average = $sum / $count;
    print "要素の個数 : ${count}";
    print "<br />";
    print "合計値 : ${sum}";
    print "<br />";
    print "平均値 : ${average}";
    ?>
</body>

</html>

すごい!のすが・・・どうやって再帰しているのか、なにがどうなっているのか不明です🤔

メモ

なんということでしょう!

PHPPHP

Posted by raika@blog