「PHP/入門/変数と値」の版間の差分
削除された内容 追加された内容
→readonlyプロパティ: const と似た仕組みに、PHP 8.1.0 以降のクラスのプロパティのreadonly修飾子があります。 ただし、readonly修飾子はプロパティにしか使えません。 また、クラスはクラススコープの定数「クラス定数」を定義することができます。 「PHP/クラス#コンストラクターとreadonlyプロパティ」および「PHP/クラス#クラス変数とクラス定数」を参照 タグ: 2017年版ソースエディター |
print文は、echo文のシノニムではなく、echoだけが複数のパラメータを受取れる。 タグ: 2017年版ソースエディター |
||
2 行
まず、PHPで加算や減算など四則演算を表示したい場合、
;例:<syntaxhighlight lang=php>
<?php
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
4aaa58
</syntaxhighlight>
* PHPは2種類の文字リテラルの構文があります。1つは<code>"</code>(ダブルクォーテーションマーク)でくくる方法が、もう1つは<code>’</code>(ダブルクォーテーションマーク)でくくる方法です。<code>"</code>でくくると文字列の中の変数は展開されます。<code>’</code>でくくると文字列の中の変数は展開されません。
::
* echo文は、print文と機能が似ていますが、引数を複数受け取ることができるので、コードがドット記号 <code>.</code>(文字列連結演算子)や<code>( )</code>(括弧)だらけになるのを避けることができます。
*: 四則演算などの算術演算子と文字列連結演算子を1つの式で混在させる場合、計算値の範囲を丸カッコ ( ) で指定する必要があります。文字列連結演算子の方が高いからです。
* <syntaxhighlight lang=html5 inline><br></syntaxhighlight> はHTMLのBR要素(強制改行)です。もしウェブコンテンツとしてレンダリングしているのでなければ、改行されずにそのまま<syntaxhighlight lang=html5 inline><br></syntaxhighlight> が表示されます。
また、この表示後のページのソースコードを見ても(一般的なwebブラウザにはhtmlソースコード表示の機能がある)、
;実行結果:<syntaxhighlight lang=text>
4aaa58<br>
</syntaxhighlight>
: PHPはこのように、計算後の数値をHTMLに代入します。
=== サーバーサイドのレンダリングの仕組み ===
PHPがウェブサーバー側で動いている時、.phpの拡張子のついたスクリプトファイルは、ウェブサーバーによってHTTPリクエストをきっかけにルーティングされ、PHPのプログラムとして実行されます。プログラムの実行結果は標準出力に書き出され、この時すでにHTMLの形式であり、echo や print の「結果」がレンダリングされています(されるようにプログラムを組みます)。ウェブサーバは、PHPで書かれたプログラムのレンダリング結果に、HTTPレスポンスヘッダーをつけユーザーエージェント(多くの場合ウェブブラウザ)に応答します(都度HTMLファイルが書かれるわけではありません)。
このため、PHPで書かれたプログラムの内容はユーザーエージェント側には送信されません。
== 変数とは ==
変数とは、
変数は必ず名前を持ち、識別子のルールに従います。
== PHPの変数を扱う決まり ==
変数を示すとき、 $ を初めに書きま
また、
つまり、
65 ⟶ 41行目:
:$_kkk54
は
:$89aa
:$7_loop
PHPでは、変数名の大文字、小文字を区別します
$name $NAME $Name $namE $nAME
はすべて違う変数
== 変数を使う ==
80 ⟶ 56行目:
変数を使うプログラムをかいてみる。
;例:<syntaxhighlight lang=
<?php
$a = 99;
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
99
</syntaxhighlight>
: 上記コードは変数 $a に値 99を代入し、それをecho文によって表示するプログラムである。
:このように変数は、文字列を入れることもできる。
102 ⟶ 73行目:
ほかの例も下記に見ていこう。
;例::<syntaxhighlight lang=php>
<?php
$a = "こんにちは";
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
挨拶 : こんにちは
</syntaxhighlight>
: このように、引用符の中に変数を埋め込むことができる。
:: $aを{}で囲んでいるのは、分かち書きされていないと変数名を正しくparseできないためです。
=== 変数と文字の連結 ===
PHP で変数と文字列を連結するとき、<code>.</code> を使う。(文字列と別の文字列の連結で使う<code>.</code>演算子と同一です。)
;例:<syntaxhighlight lang=php>
<?php
$a = 7;
131 ⟶ 95行目:
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
7 is answer
</syntaxhighlight>
なお、下記のようにドット連結を使わなくても、同じ結果になるコードを書くことができる。
;例:<syntaxhighlight lang=
<?php
$a = 7;
print "{$a} is answer";
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
7 is answer
</syntaxhighlight>
151 ⟶ 114行目:
print文とは別に、printf という末尾にfのついている関数があります。末尾にfのつくほうの printf 関数は、C言語に由来する関数です(C言語に同じ名前の関数があり、同じような書式で使います)。
:<syntaxhighlight lang=
<?php
$a = 7;
157 ⟶ 120行目:
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
7 is answer
</syntaxhighlight>
== 演算子 ==
PHPでは他のプログラミング言語同様、数学風の演算子式で計算を行う。
;例::<syntaxhighlight lang=php>
<?php
$num1 = 70;
175 ⟶ 134行目:
$sum = $num1 + $num2;
$sum = $num1 - $num2;
$sum = $num1 * $num2;
$sum = $num1 / $num2;
$sum = $num1 % $num2;
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
82
58
840
5.8333333333333
10
</syntaxhighlight>
: ※ PHPの除算は、割り切れない場合の「/」の結果は浮動小数である。この型変換の規則は、プログラミング言語ごとに異なり、負の値が関連した時に特異的に特徴が出ることもあるので、PHPに限らず新しいプログラミング言語を習得するときのチェックポイントです。
:整数の範囲で割り算をしたい場合には、PHP7以降では<code>intdiv()</code> 関数を使うことで実現できる。
:PHP7以前でも、小数点斬り捨ての関数 floor()などで、割り算の整数値を求められる。
266 ⟶ 198行目:
は、それぞれ「演算子」と呼ばれる。
:<syntaxhighlight lang=
<?php
345 ⟶ 277行目:
ためしに下記コード例では、unsetの適用後、変数を参照しています。
:<syntaxhighlight lang=
<?php
$num1 = 70;
376 ⟶ 308行目:
発音的には null は「ヌル」または「ナル」などと読みます。
:<syntaxhighlight lang=
<?php
$num1 = 70;
410 ⟶ 342行目:
;コード例
:<syntaxhighlight lang=
<?php
print $w; // これ以前のどこでも$wを定義していない
444 ⟶ 376行目:
なお、下記コードのように変数の前に<code>@</code> アットマーク をつけることで、警告文などを非表示にすることができますが、これは単に非表示になっただけに過ぎず、大本のPHP本体の開発陣たちが未定義変数を非推奨にしていく開発方針の流れ自体は変わらないので、警告メッセージから目を背けるのではなく、変数の定義をするなどの対応をしておきましょう。なお、このようなPHPのアットマークの機能のことを「エラー制御演算子」といいます。
:<syntaxhighlight lang=
<?php
print @$w; // これ以前のどこでも$wを定義していない
|