第1週


PHPの基本

PHPの基本構文

<?php echo 'こんにちは'; ?>

区切り文字は;(セミコロン)
推奨されてはいないが、以下も可能

<%〜%>
<?〜?>

PHPはHTML埋め込み型言語

「<?php 〜 ?>」(PHPタグ)をHTML内に書いても、そこだけPHPとして解釈してくれる。

PHPはインタプリタ言語

コンパイル型言語
ソースコードをいったんコンパイラでコンパイル(簡単にいうと「翻訳」)して、
コンピュータが理解できる形式にしてからプログラムを実行。

インタプリタ型言語
コンパイル言語の反対の意味に当たる言語。
実行する過程で「逐次」翻訳をしながら処理を行うので、コンパイルをする必要がない。
トライ&エラー、リトライ開発に向いている。

変数


変数とは?:データの入れ物

$string = 'おなかすいた';
$number = 14;

PHPはJavaやC#と違って、変数のデータの型の宣言が不要。

これはスクリプトで変数が初めて使われたタイミングで、変数のための要領が自動的にメモリ上に確保されるため。

変数の命名規則

  • 「$」から始まる
  • 「$」の後は_(アンスコ)か英字
  • 「$」の2文字目以降は_(アンスコ)か英数字
  • 英字の大文字・小文字は区別

変数を作るときの留意点

  • 名前から変数の内容が類推できる
  • 長すぎず、かつ短すぎない
  • 見た目がにているような名前は付けない
  • 記法を統一する
  • ローマ字は表記は使わない

可変変数

変数を変数として扱う

データ型

PHPはJavaやC#と違って、データの型に関して寛容。

変数(入れ物)のデータ型が中身の応じて自動的に変化する。
とはいえ、厳密な演算や比較を行う場合はPHPでもデータ型を念頭に置いた方がよい。

分類データ型
スカラー型論理型(bool, boolean)true(真)、false(偽)
整数型(int, integer)10進数、8進数、16進数
浮動小数点型(float, duble, real)指数を使って数を表す
文字列型(string)'や"で囲まれた0個以上の文字列
複合型配列型(array)データの集合
オブジェクト型(object)データと手続きの集合
特殊型リソース型(resource)外部リソースへの参照
NULL型(null)値が未定義であることを示す

以下、それぞれの型と値(リテラル)について

※リテラル:
変数に格納できる値そのもの。または値をスクリプトの中で表現する方法のこと。


論理リテラル

true(真)かfalse(偽)のどちらかで「のみ」表現。
なお、以下を自動的にfalseとみなす。

  • 空文字列、文字列の「0」
  • 整数型の「0」
  • 浮動小数点型の「0.0」
  • 要素数が0である空の配列
  • NULL
  • false

整数リテラル(int)

10進数リテラル、8進数リテラル、16進数リテラル

8進数、16進数

8進数、16進数を表現するためには、プレフィックス(接頭語)としてそれぞれ「0」「0x」をつける。

0777(511)
0600(384)
0xFF(255)
0xAA88CC(11176140)

サンプル1

※このよな表現方法では、PHPは間違った書式でもエラーを出さずになんとか値を返す。

011800[8進数] → 「8」は使われないはずの書式で使われている
              → 「8」以降無視
              → 「011」[8進数]で解釈 = 9[10進数]

サンプル2

浮動小数点リテラル

「<仮数部>e<符号><指数部>」の形式で表されるリテラル

文字列リテラル

'(シングルクォート)または"(ダブルクォート)でくくられたリテラル これらの違いは中にある変数が展開されるかどうか
表示するにはエスケープがある必要な文字もあるので、要注意!

\r, \n, \t, \v, \f, \$, \\, \"
  • ヒアドキュメント

$data = <<<EOD

〜長い文章〜

EOD;

※「EOD」デリミタ(区切り文字)なので、なんでもよい。
 たとえば、<<<HOGE HOGE;

※EOD:「End of data:データ終わり、データ終了」の略
 ダゴン秘密教団 (Esoteric Order of Dagon)のことではない。

サンプル3


NULL

ある変数が値を持たないことをあらわす唯一のリテラル
以下のような条件の場合に当てはまる

  • 変数NULL値が入っていない場合
  • 変数に明示的にNULLが代入された場合
  • unsetによって変数の内容が破棄された場合

配列

スカラー変数:ひとつの変数に対して、ひとつの値

配列:ひとつの変数に、複数の値を収めることができる
   (スカラー変数に対して)複合型と呼ばれる場合もある

$data = array();
$data = array('いちご','めろん','みかん') //添え字としてインデックス番号が割り振られる
$data[1] = 'りんご'; //ブラケット構文

連想配列

$dara = array(
  'stroberry' => 'いちご',
  'melon'     => 'めろん',
  'orange'    => 'みかん'
);

サンプル8

多次元配列

$data01234
0
1
2
3
4

 $data[2][1] = 'し'

サンプル4

型の相互変換

暗黙的な変換

PHPではそのときどきの状況に応じて値を適切なデータへ変換することで、
「それぞれの文脈に応じてできるだけ何らかの処理をしよう」とすること。

$sample = "11"     //文字列リテラルの「11」
12 + $sample = 23  //暗黙的な変換により、整数リテラルに変換された

サンプル5


明示的な変換(キャスト構文)

厳密な比較や演算をしたい場合、キャスト構文を利用して値を特定のに強制変換する。
定数・変数の前に、以下の型をつけるだけで変換可能

データ型概要
int, integer整数型へのキャスト
bool, boolean論理型へのキャスト
float, duble, real浮動小数点型へのキャスト
string文字列へのキャスト
binaryバイナリ文字列へのキャスト
array配列へのキャスト
objectオブジェクトへのキャスト
unsetNULL型へのキャスト

例.

(int)150.88 → int(150)
(int)true  → int(1)
(string)true → string(1) "1"
(array)108   → array(1) { [0] ⇒ int(108) }

サンプル6

補足:文字列→数値のキャスト

(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)

サンプル7

16進数や指数表現をキャストする場合、そのままではできない。
必ず「0を加算してから」キャストを行う必要がある。

指数表現については、float型ならそのままでも正しく認識してくれるが、
16進数についてはやはり正しくキャストされない


参考資料

  • 独習PHP 第2版

最新の20件

2014-07-10 2014-06-07 2010-12-08 2010-11-12 2010-11-01 2010-10-25 2010-10-15 2010-08-18 2010-08-02 2010-07-20

今日の1件

  • 第1週(1)

  • counter: 545
  • today: 1
  • yesterday: 1
  • online: 1