@ PHP

variables:変数

変数(variables)は、プログラムが動作する間に操作するデータを保持します。そのデータとは、HTML フォームにタイプ入力されたエントリーや、データベースから引き出したユーザーについての情報のようなものです。

変数は数値や文字を格納しておく「箱」のようなのもです。
変数は「必要なもの」を入れておくことができ、「入れたままの状態」で持ち運んで、必要なときに中身の「必要なものを」取りして、使うことができます。

一つの変数に対してひとつの値を持つものことを「スカラー変数」といいます。
複数の値を格納する変数のことを「非スカラー変数」と呼びます。代表的な非スカラー変数として「配列」があります。

PHP では、変数名の前に $ を付けて変数を表します。変数に値を代入するためには、等号(=)が使われます。これを代入演算子と言います。

variables_05.php のよに変数に値を代入します。

variables_05.php

<?php
$plate = 5;
$dinner = 'トマトのスペイン風煮込みハンバーグ';
$cost_of_dinner = '833円';
$cost_of_lunch = $cost_of_dinner;

$page_header = <<<HTML_HEADER
<html>

<head>
<title>メニュー</title>
</head>

  <body bgcolor="#fffed9">
  <h1>夕食メニュー</h1>
HTML_HEADER;

$page_footer = <<<HTML_FOOTER
</body>

</html>
HTML_FOOTER;

print $page_header;
print $page_footer;
?>

変数の命名規則

変数の名前には「$(ドル記号)」をつけます。ただし全ての文字が使えるのではなく、名前付けにはルールがあります。

変数の命名規則
記号 $のみ
最初の1文字 アンダースコア(_)、英字(a~z、A~Z)、アスキー文字(128~255)
残りのすべての文字 アンダースコア(_)、英字(a~z、A~Z)、数字(1~0)、アスキー文字(128~255)
大文字/小文字 区別される
使うことができない変数名
変数名 不備
$2hot4u 数字で始まっている
$drink-size 受け入れられない文字:-
$drinkmaster@example.com 受け入れられない文字:@ と .
$drink!lots 受け入れられない文字:!
$drink+dinner 受け入れられない文字:+

予約語は変数には使えません

変数に使えないもじとして、「予約語」があります。予約語は、PHP の構文で使われる文字列です。予約語は変数名なのか PHP の構文なのか区別がつかなくなるため指定できません。

PHP: 予約語の一覧 – Manual

変数の使い方

変数に値を代入する

variables_01.php

<?php
$dinner = 'トマトのスペイン風煮込みハンバーグ';
print $dinner;
?>

複数の変数を使うことができる

variables_02.php

<?php
$dinner = 'トマトのスペイン風煮込みハンバーグ';
$cost_of_dinner = '833円';
print $dinner . $cost_of_dinner;
?>

値の入っている変数に値を代入することもできる

variables_03.php

<?php
$dinner = 'トマトのスペイン風煮込みハンバーグ';
$dinner = '具だくさんの魚介パエリア';
print $dinner;
?>

変数に変数を代入することもできる

variables_04.php

<?php
$cost_of_dinner = '833円';
$cost_of_lunch = $cost_of_dinner;
print $cost_of_lunch;
?>

変数の操作

算術あるいは文字列の演算子(operators)は、数または文字列を含む変数にたいして、リテラルの数や文字列に対する時と同じように働きます。

variables_06.php

<?php
$price = 890;
$tax_rate = 0.08;
$tex_amount = $price * $tax_rate;
$total_cost = $price + $tex_amount;

$usrname = 'taro';
$domain = '@example.com';
$email_address = $usrname . $domain;

print '消費税 :'. $tex_amount;
print "<br>\n";
print '合計金額: '. $total_cost;
print "<br>\n";
print $email_address;
?>

代入と加算を組み合わせる

代入演算子(assignment)は、値を変更するための簡潔な方法として、算術演算子と文字列操作を組み合わせて使うことができます。

variables_07.php は、加算と代入を組み合わせる2つの方法です。

variables_07.php

<?php
// 普通の方法で3を足す
$price = $price + 3;
// 組み合わせ演算子を使って3を足す
$price += 3;
print $price;
?>

代入と結合の組み合わせ

代入演算子と文字列結合演算子を使って、文字列に値を加えます。組み合わせ演算子を使う長所は、より簡潔になることです。

variables_08.php

<?php
$username = 'taro';
$domain = '@example.com';
// 普通の方法で $username と $domein を結合する
$username = $username . $domain;
// 組み合わせ演算子を使って結合する
$username .= $domain;

print $username;
?>

増分と減分

変数に 1 を増分したり減分したりすることはよくあることで、それらのための演算子も用意されています。

++ 演算子(加算子)は変数に 1 を足し、– 演算子(減算子)は 1 を引きます。

これらの演算子は、通常 for() ループの中で使われます。

variables_09.php

<?php
$birthday = 18;
$years_left = 1;

$birthday = $birthday +1;
++$birthday;

$years_left = $years_left  -1;
--$years_left;

print $birthday;
print "<br>\n";
print $years_left;
?>

文字列の中に変数を置く

変数の値をテキストといっしょに出力することは頻繁にあります。

二重引用符で囲まれる文字列中に変数名が含まれる場合、変数名はその変数の値に置き換えられます。

variables_10.php

<?php
$email = 'taro@example.com';
print "send replace to $email";
?>

ヒアドキュメントは多くの変数を長い HTML ブロックの中に補完するために特に便利です。

variables_11.php

<?php
$page_title = 'Menu';
$meat = 'ポーク';
$vegetable = 'アスパラ';
print<<<MENU
<html>
<head><title>$page_title</title></head>
<body>
  <ul>
    <li>$meatソテー</li>
    <li>ロースト$meat</li>
    <li>メキシカン$meat $vegetable巻き</li>
  </ul>
</body>
</html>
MENU;
?>

変数を文字列に補完するときに、PHP が変数名を間違えるかもしれないので、変数名を { } (ブレース)で囲って混乱を避けます。

variables_12.php

<?php
$cooking = '炒め物';
$meat = '牛肉';
print "{$meat}と青梗菜の$cooking";
?>

可変変数

可変変数とは「変数名を変数の値によって決める」ことができる変数のことです。

先頭に「$」マークを2つ重ねる事によって、変数名を別の変数の値で動的に決定します。

variables_13.php

<?php
$x = 'title';
$title = 'PHP: Hypertext Preprocessor';
print $$x;
?>