DESIGNMAP

  1. TOP
  2. 公開講座
  3. ゼロから始めるPHP入門
  4. 変数、定数 ー ゼロから始めるPHP入門(PHP7)【Vol.3】

変数、定数 ー ゼロから始めるPHP入門(PHP7)【Vol.3】

データを一時的に保存するときに、変数を使います。

シンプルなコードを書いてみましょう。Atomを起動して、新規ファイルを作ります。前回作った[php-study]フォルダ内に「sample3-1.php」として保存します。前回と同じようにHTMLのコードを生成させて、body要素内に以下のコードを書き、前回と同じようにApacheを起動して、ChromeからPHPを実行してください。

実行方法の詳しい手順は「PHPの実行」をご覧ください。またこれ以降のコードに関しても任意のファイル名「sample3-2.php」などを作成して、実際に実行しながら読む進めていってください。

<?php
$name = "太郎";
echo $name;  
?>

実行結果:

太郎

変数のルール

$nameが変数です。今回は「太郎」という文字列を保存しています。変数の名前は任意の名前が使えます。ただし以下のルールがあります。

  • 頭に$マークをつけること
  • $マークの直後は、英字かアンダースコアであり、数字はつけられない
  • 残りの文字は英数字かアンダースコアであること
  • 大文字、小文字は区別される

以下の変数名はエラーです。

$3name
$name-jp
$name.jp
$name+jp

ハイフンは使ってしまいがちですので、注意してください。

=は代入演算子です。右辺のデータを左辺の変数に代入します。

変数から変数へデータのコピー

別な変数へデータをコピーすることも可能です。

<?php
$name = "太郎";
$name2 = $name;
echo $name2;
?>

実行結果:

太郎

この場合、太郎という文字列は別な変数にコピーされますので、メモリに2つ存在することになります。

なので$name変数の値を変更しても、$name2変数には無関係です。

<?php
$name = "太郎";
$name2 = $name;
$name = "二郎";
echo $name2;
?>

実行結果:

太郎

リファレンス渡し

下記のコードを実行すると、今度は二郎と表示されます。

<?php
$name = "太郎";
$name2 = &$name;
$name = "二郎";
echo $name2;
?>

実行結果:

二郎

変数から変数へ代入するときに、右辺の変数の頭に&をつけると、変数のデータがコピーされるのではなく、$name$name2がエイリアス(別名)のような関係になり、どちらも同じデータを参照するようになります。

この場合、$name変数の値を変更すると、$name2変数にも影響を与えます。

値の上書き

変数は再代入が可能で、値が上書きされます。

<?php
$name = "太郎";
$name = "二郎";
echo $name;
?>

実行結果:

二郎

異なるデータ型の上書き

変数は異なるデータ型の値の上書きも可能です。

<?php
$name = "太郎";
$name = 3;
echo $name;
?>

実行結果:

3

同じ変数に整数型のデータを入れていますが、エラーにはならずそのまま上書きされます。

データ型に関しては別な回で解説します。

PHPタグをまたぐパターン

HTMLの中にPHPのコードを書くときは、<?php ?>というPHPタグを書きます。変数は、複数のPHPタグをまたいで使うことができます。

<body>
<?php
$name = "太郎";
?>
<h2><?php echo $name; ?></h2>
</body>

実行結果:

太郎

Chromeで右クリック→[ページのソースを表示]で、PHPが出力したHTMLのコードを見ると、以下のようなコードが確認できます。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<h2>太郎</h2>
  </body>
</html>

$name変数は一つ目のPHPタグで使われます。変数はそのまま生き続け、2回目のPHPタグ内でも使えることができます。

定数

定数は値が変更できないデータのIDです。
以下のコードを実行すると、エラーになります。

<?php
const NAME = "太郎";
NAME = "二郎";
echo NAME;
?>

実行結果:

Parse error: syntax error, unexpected '=' in

定数には再代入ができないのです。

定数は任意の名前が使えますが、以下のルールがあります。

  • 頭に$は不要
  • 慣例的に大文字を使用する。長い名前の場合、アンダースコアで区切る
  • 頭は英字かアンダースコアであり、数字はつけられない
  • 残りの文字は英数字かアンダースコアであること
PHP7以降は定数に予約語(ただしclassを除く)を使うことができるようになりました。
予約語はhttp://php.net/manual/ja/reserved.keywords.phpにまとまっています。

constはPHP5.3.0以降からサポートされました。それより前は、defineを使っていました。両方とも使用可能です。

<?php
define("NAME", "太郎");
echo NAME;
?>

もしくは

<?php
define('NAME', "太郎");
echo NAME;
?>
constはトップレベルのスコープで宣言する必要があります。スコープはまだ学んでいないので、現段階では詳しくは解説しませんが、関数、ループ、if文、try/catchブロックの内部では宣言できません。

スポンサーリンク

プロフィール

DESIGNMAP
ディレクター
ON VISITINGを制作・運営。
お問い合わせ