<?php echo 'こんにちは'; ?>
区切り文字は;(セミコロン)
推奨されてはいないが、以下も可能
<%〜%> <?〜?>
「<?php 〜 ?>」(PHPタグ)をHTML内に書いても、そこだけPHPとして解釈してくれる。
コンパイル型言語:
ソースコードをいったんコンパイラでコンパイル(簡単にいうと「翻訳」)して、
コンピュータが理解できる形式にしてからプログラムを実行。
インタプリタ型言語:
コンパイル言語の反対の意味に当たる言語。
実行する過程で「逐次」翻訳をしながら処理を行うので、コンパイルをする必要がない。
トライ&エラー、リトライ開発に向いている。
$string = 'おなかすいた'; $number = 14;
これはスクリプトで変数が初めて使われたタイミングで、変数のための要領が自動的にメモリ上に確保されるため。
変数の命名規則
変数を作るときの留意点
変数を変数として扱う
変数(入れ物)のデータ型が中身の応じて自動的に変化する。
とはいえ、厳密な演算や比較を行う場合はPHPでもデータ型を念頭に置いた方がよい。
分類 | データ型 | 例 |
スカラー型 | 論理型(bool, boolean) | true(真)、false(偽) |
整数型(int, integer) | 10進数、8進数、16進数 | |
浮動小数点型(float, duble, real) | 指数を使って数を表す | |
文字列型(string) | 'や"で囲まれた0個以上の文字列 | |
複合型 | 配列型(array) | データの集合 |
オブジェクト型(object) | データと手続きの集合 | |
特殊型 | リソース型(resource) | 外部リソースへの参照 |
NULL型(null) | 値が未定義であることを示す |
以下、それぞれの型と値(リテラル)について
※リテラル:
変数に格納できる値そのもの。または値をスクリプトの中で表現する方法のこと。
true(真)かfalse(偽)のどちらかで「のみ」表現。
なお、以下を自動的にfalseとみなす。
10進数リテラル、8進数リテラル、16進数リテラル
8進数、16進数を表現するためには、プレフィックス(接頭語)としてそれぞれ「0」「0x」をつける。
例
0777(511) 0600(384) 0xFF(255) 0xAA88CC(11176140)
※このよな表現方法では、PHPは間違った書式でもエラーを出さずになんとか値を返す。
例
011800[8進数] → 「8」は使われないはずの書式で使われている → 「8」以降無視 → 「011」[8進数]で解釈 = 9[10進数]
「<仮数部>e<符号><指数部>」の形式で表されるリテラル
'(シングルクォート)または"(ダブルクォート)でくくられたリテラル
これらの違いは中にある変数が展開されるかどうか
表示するにはエスケープがある必要な文字もあるので、要注意!
\r, \n, \t, \v, \f, \$, \\, \"
$data = <<<EOD
〜長い文章〜
EOD;
※「EOD」デリミタ(区切り文字)なので、なんでもよい。
たとえば、<<<HOGE HOGE;
※EOD:「End of data:データ終わり、データ終了」の略
ダゴン秘密教団 (Esoteric Order of Dagon)のことではない。
ある変数が値を持たないことをあらわす唯一のリテラル
以下のような条件の場合に当てはまる
スカラー変数:ひとつの変数に対して、ひとつの値
配列:ひとつの変数に、複数の値を収めることができる
(スカラー変数に対して)複合型と呼ばれる場合もある
$data = array(); $data = array('いちご','めろん','みかん') //添え字としてインデックス番号が割り振られる $data[1] = 'りんご'; //ブラケット構文
連想配列
$dara = array( 'stroberry' => 'いちご', 'melon' => 'めろん', 'orange' => 'みかん' );
$data | 0 | 1 | 2 | 3 | 4 |
0 | あ | い | う | え | お |
1 | か | き | く | け | こ |
2 | さ | し | す | せ | そ |
3 | た | ち | つ | て | と |
4 | な | に | ぬ | ね | の |
$data[2][1] = 'し'
PHPではそのときどきの状況に応じて値を適切なデータへ変換することで、
「それぞれの文脈に応じてできるだけ何らかの処理をしよう」とすること。
例
$sample = "11" //文字列リテラルの「11」 12 + $sample = 23 //暗黙的な変換により、整数リテラルに変換された
厳密な比較や演算をしたい場合、キャスト構文を利用して値を特定のに強制変換する。
定数・変数の前に、以下の型をつけるだけで変換可能
データ型 | 概要 |
int, integer | 整数型へのキャスト |
bool, boolean | 論理型へのキャスト |
float, duble, real | 浮動小数点型へのキャスト |
string | 文字列へのキャスト |
binary | バイナリ文字列へのキャスト |
array | 配列へのキャスト |
object | オブジェクトへのキャスト |
unset | NULL型へのキャスト |
例.
(int)150.88 → int(150) (int)true → int(1) (string)true → string(1) "1" (array)108 → array(1) { [0] ⇒ int(108) }
(int)'0xFF' → int(0) (int)'1E4' → int(1) (int)('0xFF'+ 0) → int(255) (int)('1E4'+ 0) → int(10000) (float)'0xFF' → float(0) (float)'1E4' → float(10000)
16進数や指数表現をキャストする場合、そのままではできない。
必ず「0を加算してから」キャストを行う必要がある。
指数表現については、float型ならそのままでも正しく認識してくれるが、
16進数についてはやはり正しくキャストされない
参考資料