「PHP/入門/変数と値」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
マジカル定数 PHPには9つの魔法の定数があり、それらは使用される場所によって変化します。 たとえば、__LINE__ の値は、スクリプトのどの行で使用されるかに依存します。 これらの「魔法の」定数は、実行時に解決される通常の定数とは異なり、すべてコンパイル時に解決されます。 これらの特殊な定数は大文字と小文字を区別しません。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
敬体に統一。
タグ: 2017年版ソースエディター
3 行
 
;例:<syntaxhighlight lang=php>
echo<?= 1 + 3, "aaa, ", 50 + 8, "<br>";?>
<?php
echo 1+3, "aaa", 50+8, "<br>";
?>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
4, 58
4aaa58
</syntaxhighlight>
*: PHPは2種類の文字リテラルの構文があります。1つは<code>"</code>(ダブルクォーテーションマーク)でくくる方法が、もう1つは<code>’</code>(ダブルクォーテーションマーク)でくくる方法です。<code>"</code>でくくると文字列の中の変数は展開されます。<code>’</code>でくくると文字列の中の変数は展開されません。
 
*: echo文は、print文と機能が似ていますが、引数を複数受け取ることができるので、コードがドット記号 <code>.</code>(文字列連結演算子)や<code>( )</code>(括弧)だらけになるのを避けることができます。
* PHPは2種類の文字リテラルの構文があります。1つは<code>"</code>(ダブルクォーテーションマーク)でくくる方法が、もう1つは<code>’</code>(ダブルクォーテーションマーク)でくくる方法です。<code>"</code>でくくると文字列の中の変数は展開されます。<code>’</code>でくくると文字列の中の変数は展開されません。
:: <code><?= 123; ?></code>は、<code><?php echo 123; ?></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>
25 ⟶ 22行目:
=== サーバーサイドのレンダリングの仕組み ===
PHPがウェブサーバー側で動いている時、.phpの拡張子のついたスクリプトファイルは、ウェブサーバーによってHTTPリクエストをきっかけにルーティングされ、PHPのプログラムとして実行されます。プログラムの実行結果は標準出力に書き出され、この時すでにHTMLの形式であり、echo や print の「結果」がレンダリングされています(されるようにプログラムを組みます)。ウェブサーバは、PHPで書かれたプログラムのレンダリング結果に、HTTPレスポンスヘッダーをつけユーザーエージェント(多くの場合ウェブブラウザ)に応答します(都度HTMLファイルが書かれるわけではありません)。
このため、PHPで書かれたプログラムの内容ソースコードはユーザーエージェント側には送信されません。
 
== 変数とは ==
変数とは、値に名前をつけてプログラム中から参照で切るよにする仕組みです。
変数は必ず名前を持ち、識別子のルールに従います。
 
 
== PHPの変数を扱う決まり ==
54 ⟶ 50行目:
== 変数を使う ==
=== 概要 ===
変数を使うプログラムをかいてみます
 
;例:<syntaxhighlight lang=php>
66 ⟶ 62行目:
99
</syntaxhighlight>
: 上記コードは変数 $a に値 99を代入し、それをecho文によって表示するプログラムである
:このように変数は、文字列を入れることもできます
 
;引用符の中での変数の埋込み
 
ほかの例も下記に見ていきましょう。
;引用符の中での変数の埋め込み
ほかの例も下記に見ていこう。
 
;例::<syntaxhighlight lang=php>
83 ⟶ 78行目:
挨拶 : こんにちは
</syntaxhighlight>
: このように、引用符の中に変数を埋め込むことができます
:: $aを{}で囲んでいるのは、分かち書きされていないと変数名を正しくparseできないためからです。
 
=== 変数と文字の連結 ===
99 ⟶ 94行目:
</syntaxhighlight>
 
なお、下記のようにドット連結を使わなくても、同じ結果になるコードを書くことができます
 
;例:<syntaxhighlight lang=php>
125 ⟶ 120行目:
 
== 演算子 ==
PHPでは他のプログラミング言語同様、数学風の演算子式で計算を行います
 
;例::<syntaxhighlight lang=php>
<?php
$num1 = 70;
152 ⟶ 147行目:
10
</syntaxhighlight>
: ※ PHPの除算は、割り切れない場合の「/」の結果は浮動小数点数である。この型変換の規則は、プログラミング言語ごとに異なり、負の値が関連した時に特異的に特徴が出ることもあるので、PHPに限らず新しいプログラミング言語を習得するときのチェックポイントです。
:整数の範囲で割り算をしたい場合には、PHP7以降では<code>intdiv()</code> 関数を使うことで実現できます
:PHP7以前でも、小数点斬り捨ての関数 floor()などで、割り算の整数値を求められます
 
;例
たとえば、Apache上でPHP7を試しても(webブラウザで閲覧)、
<pre>
<?= 70 / 12; ?>
<?php
print(70/12);
?>
</pre>
;実行結果
5.8333333333333
:という浮動小数点数である
 
整数除算は、intdiv(被除数, 除数) です
intdiv()は、HTMLに組み込む場合、
;intdiv()
<pre>
<?= print(intdiv(70,12)); ?>
<?php
print(intdiv(70,12));
?>
</pre>
;実行結果
のように使い、結果は「5」である。書式は intdiv(割られる数,割る数) である。
5
 
 
説明の簡単化のためコマンドラインから使う場合で説明すると、
<pre>
php > print(echo intdiv(70,12));
5
</pre>
 
のように、1行目を入力すると、2行目に答えの「5」が自動的に出てくるきました
 
 
floor()関数を使うなら、
<pre>
php > print(echo floor(70/12));
5
</pre>
192 ⟶ 184行目:
「5」というのは、
:70/12 = 5 あまり10
の商の5の事である
 
 
この、 + - * / %
は、それぞれ「演算子」と呼ばれます
 
:<syntaxhighlight lang=php>
207 ⟶ 199行目:
$b--;
 
printfecho ($a ., "<br>" ., $b);
 
?>
217 ⟶ 209行目:
このように、
++, --
、はそれぞれ、プラス1, マイナス1を実行しま
 
これらをそれぞれ、(プラス1するほうを)インクリメント、(マイナス1するほうを)デクリメント、と呼ぶ。
292 ⟶ 284行目:
|-
! __DIR__
| ファイルが存在するディレクトリ。インクルード内で使用された場合、インクルードファイルのディレクトリが返されます。これは、dirname(__FILE__)と同等である。このディレクトリ名は、ルートディレクトリでない限り、末尾のスラッシュを持ちません。
|-
! __FUNCTION__
453 ⟶ 445行目:
=== unset ===
今後に使う予定のない変数に unset() 関数を適用することで、明示的にその変数を使わないことを表明できます。
また、unset にともないです、unsetした変数に占有されていたメモリ領域のリファレンスカウントが一つ減るので、メモリが開放される可能性があります。
 
unsetの適用後、変数を参照すると、言語処理系が警告をしてくれるので、バグなどを発見しやすくなります。
521 ⟶ 513行目:
 
=== 未定義変数 ===
2021年の現在、最新のPHP8では、未定義(Undefined)の変数をprintしたりechoなど出力したりすると、警告文(warning)が出るようになりました(以前は通知 notice どまりだっでした)。実行自体は中断されずに続行しますが、あまり推奨されません。
 
;コード例