古庄親方のコラム)上級へ続く “中間地点” 「変数に含まれる、直接は見えにくい情報」

今回の初級問題では、for 文と foreach 文を通じて、配列の扱いを見ました。
まずは、配列について少し掘り下げてみましょう。
配列は「複数の値がひとかたまりになっている」もの、ですが、実はそれだけではありません。
普通に、例えば

$arr = [0, 1, 2, 3];

とすると、

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
)

のようになります。
しかし、例えば

$arr = [
    3 => 3,
    2 => 2,
    0 => 0,
    1 => 1,
];

とすると

Array
(
    [3] => 3
    [2] => 2
    [0] => 0
    [1] => 1
)

となります。
このように、普段はあまり気にしないかもしれませんが、配列は「作られた/追加された順番」の情報も保持しています。
こういった「直接の値以外の情報」もあることを知っておくと、学習を深めることができます。

また、上級の問題では、リファレンス(参照)と呼ばれるものがでてきました。
これを理解するために、まず変数について改めておさらいをしておきましょう。

変数には「名前」があり、その名前を使って「値」を扱います。
名前は「変数名」、値は「中に入っているデータ」ですね。

これはPHPに限らないのですが。
「中に入っているデータ」1つに対して、複数の「名前」をつけることが可能になります。
PHPでは、このように同じ内容を別の名前で扱うための仕組みとして、リファレンスがあります。

そのため「別の変数」に見えて「実は同じ中身を指している」といったことがおきるんですね。
こういった「少し内部の話」に興味が出てきたら、データ構造について学習してみるとよいでしょう。
例えば PHP の配列は順番を保持しているマップなので、「マップ」というデータ構造を知ると理解しやすくなります。

また、C言語などにある「ポインタ」を学ぶと、「値がどこにあるか」「変数が何を指しているか」「リファレンス/参照とはなにか?」という感覚をつかみやすくなるこ
とがあります。
PHPのリファレンスはC言語のポインタそのものではありませんが、考え方の補助として知っておくと理解しやすいでしょう。

初級のうちは、「変数に何が入っているか」「処理がどの順番で動くか」を追うことが中心になります。
しかし少し学習が進むと、「その値はどのように保持されているのか」「別の名前からも同じ内容を見ていないか」といった点も重要になります。

配列の順番やリファレンスは、どちらも「見えている値」だけではなく、その裏側にある関係を読むための題材です。
こうした視点を少しずつ持てるようになると、PHPのコードをより深く読めるようになります。
ここが、初級から上級へ進むための、大切な中間地点なのだと思います。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次