【PHP】記憶領域 – 変数と値の紐付きを図解

【PHP】記憶領域 – 変数と値の紐付きを図解

値を変数に代入すると記憶領域と呼ばれる場所に保存されます。
記憶領域はコンピューターの物理的な場所になり、イメージを掴むとプログラミングをより理解できるようになります。

ここでは記憶領域について図解で解説します。

なお、変数については次の記事をご覧ください。

  • 記憶領域

記憶領域とは

記憶領域はコンピューターの物理的な場所にあり、値(データ)を保存する役割を持ちます。
具体的にはメモリやハードディスクなどのハードウェアで、仕組みを理解しようとすると、別の知識が必要になりますので、ここでは下記のような大きな四角い領域があるイメージを持ってください。

そして、記憶領域は次のように区画に分かれています。

この各区画に値(データ)を1つ記憶できるようになっています。
※ 分かりやすいよう各区画に①〜⑤の番号を付けています。

変数と記憶領域

初めに次のソースコードと実行結果をご覧ください。

<?php

$x;

$x = 8;

echo $x;

?>
8

$x8を代入して、出力する単純なコードです。

上記ソースコードで記憶領域がどのように関わっているかを解説します。

1. 変数$xの宣言(3行目)

変数$xの宣言時にコンピューターは$xを記憶領域の1つの区画と紐付けます。

2. 変数に値を代入(5行目)

代入演算子を使用して$x8を代入しています。
このときコンピューターは$xに紐づいた記憶領域に値(8)を記憶します。

3. 変数を出力(7行目)

echo$xを出力しています。
このときコンピュータは$xに紐づく記憶領域の値(8)を取り出します。

このようにプログラムは変数と値を記憶領域で紐づけています。

変数が複数ある場合

変数が複数ある場合も同様です。
例えば、上記ソースコードを変数を2つ使うソースコードに拡張すると次のようになります。

<?php

$x;

$x = 8;

$y;

$y = 3;

echo $x."\n";
echo $y."\n";

?>
8
3

$yを追加し、3を代入して出力するコードを追加しました。

この場合の記憶領域の関わり方は、5行目までは変数が1つの場合と同じです。
7行目の$yの宣言がされると、次の図のように$xとは被らないよう$yと記憶領域を紐づけます。

そして、$yへの代入は$xの時と同様に紐づいた記憶領域に値を記憶します。

このように変数が複数ある場合でもコンピューターが自動で記憶領域が被らないように変数と領域を紐づけてくれます。

まとめ

記憶領域は値を記憶するための場所です。
イメージを掴むことで、意図したプログラムを作りやすくなります。

なお、解説した内容はイメージになります。
もっと具体的に理解しようとするとハードウェアの理解などが必要になりますので、『先ずはプログラミングを習得したい』という方はある程度慣れてから学ぶようにしても良いでしょう。