PHP SCHOOL.biz

PHPの学習をする為のブログです。プログラム未経験の方にも理解できるよう基本的な、PHPの知識について身に付けることができるようにわかりやすい内容にしていきたいと思っています。


PHPの変数

PHPの変数

PHPでの変数の定義と作成

PHPでは、変数名には、「 $ 」をつけます。$の後に文字を加えて変数名となります。

<?php
echo $txt = "Hello world!<br />";
echo $x = "5<br />";
echo $y = "10.5<br />";
?>

実行結果

$txtにはHello world!が代入されているので$txtをechoすると「Hello world!」が出力され、$xは5が代入されているため5と出力され
$yは10.5を代入しているため10.5と出力されます。

PHPでの変数

変数名は、xやyのようなものを定義することもできますし、camera,televisionなど変数の意味がわかりやすいものなど定義することができます。
PHPでの変数のルールには以下のようなものがあります。

・変数名の先頭には「$」をつけ、そのあとに変数の名称をつける。
・変数名の先頭には、文字かアンダースコアを記載しなければいけない。$1などと定義することはできない。
・変数名には、アルファベット・数字・アンダースコアを使用することが出来る。
・変数名は、大文字小文字を使用することが出来る。また、$ageと$AGEは別の変数名として処理される。

変数の出力

変数の出力には、echoやprintという関数を使用します。
変数の出力方法には以下のような方法があります。

<?php

$txt = "you";
echo "I love $txt!";

echo '<br />';

$txt = "you";
echo "I love " . $txt . "!";

?>

上記の二つのechoでは、同じ内容を出力します。
出力結果
PHPでは、二重引用符(")で囲まれた変数は変数と処理されます。また変数と文字列を連結する際には、連結演算子にドット(.)を使用するため、上記のように画面出力されます。

また、下記のように計算結果をechoで出力することができます。

<?php
$x = 5;
$y = 4;
echo $x + $y;
?>

出力結果

PHPは変数の定義にルーズな言語

上記の例で気づいた方もいると思いますが、PHPは変数の定義にルーズな言語です。
PHPは自動的に変数の値を変換し、文字列として処理したり数値として処理します。
JavaやC++などの言語では、変数の型と変数名を定義しなければなりませんが、PHPでは変数の定義をしなくても利用することができます。
もちろん、変数の定義をして利用することも可能です。

PHPの変数のスコープ

PHPのスコープの種類は3種類しかありません。

・ローカルスコープ
・グローバルスコープ
・スーパーグローバル

の3つです。

グローバルスコープとローカルスコープ

グローバルスコープは、ファンクションの外で宣言した変数です。グローバルスコープは変数の外でのみアクセスすることができます。

<?php
$x = 5; // グローバルスコープ

function myTest() {
    // 関数内の変数xはエラーとなります。
    echo "<p>変数内の変数xの値は: $x</p>";
} 
myTest();

echo "<p>関数外の変数xの値は: $x</p>";
?>

関数内で宣言された変数xはローカルスコープです。関数の中でのみアクセスできます。
実行結果

<?php
function myTest() {
    $x = 5; // ローカルスコープ
    echo "<p>関数内の変数の値は?: $x</p>";
} 
myTest();

// 関数外での変数xはエラーとなります。
echo "<p>関数外の変数の値は?: $x</p>";
?>

同名のローカル変数を違う関数内で使用することはできます。なぜならローカル変数はそれぞれの関数内でのみ認識されるからです。

globalキーワード

関数内からグローバル変数にアクセスするために関数内での変数の定義の際にglobalを使用することがあります。
関数内で、変数の前にglobalをつけて使用します。

<?php
$x = 5;
$y = 10;

function myTest() {
    global $x, $y;
    $y = $x + $y;
}

myTest();
echo $y; // 出力は 15
?>

global定義された変数は、$GLOBALS[index]という配列に保持されます。indexの部分は、変数名です。
この配列は、ファンクション内からもアクセスすることができます。また、グローバル変数の値を更新することも可能です。
実行結果

上の例は下記のように書き換えることができます。

<?php
$x = 5;
$y = 10;

function myTest() {
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
} 

myTest();
echo $y; // outputs 15
?>

PHPでのstatic定義

通常、関数が実行された際、全ての変数の値は消えます。
しかし、ローカル変数の値を消したくない時もあります。そのような際はstaticを使用します。
変数を定義する際にstaticをつけることで使用します。

<?php
function myTest() {
    static $x = 0;
    echo $x;
    $x++;
}

myTest(); //出力は0
myTest(); //出力は1
myTest(); //出力は2
?>

最初に関数が呼ばれた時にから最後に関数が呼ばれるまで、変数xは値を保持しています。関数が呼ばれるたびにxがプラス1され三回目のmyTest関数が呼ばれた時には、変数xの値は2となります。
実行結果