この記事はPHP総復習カレンダー2日目の記事です!
時はすでに12月3日ですが細かいことは気にしない\(^o^)/
2日目は変数についてです!
PHPというよりプログラミングの共通の概念に近いですが、おさらいしていきましょう!
変数とは
変数は、「値をしまっておく箱」のようなものです。1度しまった値を別のところで取り出したり、新しい値を代入して再利用したりします。
PHPでの変数の宣言(変数の作り方)は、 $
をつけます。
<?php
$name = 'chan-toku';
echo $name; // 'chan-toku' と表示される
$num = 1;
$num = $num + 1;
echo $num; // 2と表示される
数値(integer)に ''
は必要ありません。 ''
でくくって数値を書く場合は、文字列(string)として扱われます。
計算や制御が意図しない結果になることがあるので注意しましょう!
変数名は、小文字多文字を区別し、先頭に数字はつけられません。
<?php
$name = 'chan-toku';
$Name = 'ちゃんとく'; // $nameとは別物
$article_title = 'PHP総復習カレンダー'; // '_'で繋げることができる
$2day = '変数'; // エラーになります
変数のスコープ
変数のスコープは、その変数を扱える場所、呼び出せる場所です。
クラスや関数内で定義する際の「ローカルスコープ」と、どこからでも呼び出せる「グローバルスコープ」があります。
グローバルスコープ
<?php
$days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
foreach ($days as $day) {
if ($day === 'Sat') {
$message = '今日は土曜日!';
}
}
echo $message; // '今日は土曜日!'
制御構造のブロック内で宣言された変数も、ブロック外やファイル外から呼び出すことができます。
ローカルスコープ
<?php
$date = '12月3日';
function tomorrow() {
$date = '12月4日';
echo $date; // '12月4日'
}
echo $date; // '12月3日';
クラスや関数内で変数を宣言しても、グローバルスコープの変数には影響しません。
スーパーグローバル変数
ここまでの「ユーザーが定義し、定義後も値を書き換えられる変数」に対して、PHP実行時に自動的に定義され、スコープを問わず参照可能なスーパーグローバル変数があります。
$_SERVER
, $_COOKIE
, $_SESSION
等々たくさんあるのですが、フォームで送信された値を受け取る時に使う$_GET
の例を挙げてみます。
<?php
// フォームからGETで'name=chan-toku'を送信した時
echo $_GET['name'] // 'chan-toku'
このように、$_GET
を宣言していないのに、自動で値を定義してくれます。
変数のエラー
宣言していない変数を参照しようとすると、エラーが生じます。PHPには変数があるか調べるisset()
があるので、状況に応じて使います。
<?php
echo $name; // エラー
var_dump(isset($name)); // false
$article_day2 = '変数';
var_dump(isset($article_day2)); // true
if (isset($article_day2)) {
$message = '2日目の記事を投稿しました!';
}
まとめ
変数はプログラミングの基本。適当な名前をつけると予期せぬ上書きをしてしまったり、スコープを間違えると変数を参照できずエラーが生じたりします。
さらに変数名のつけ方には守った方がよいルールなどがあるのですが、別の日に可読性なんかの話と一緒にまとめようと思います!
今日か明日は私が関数について書きます!!!