基本
PHPのHELLO WORLD
<?php
print 'Hello Word'; ←セミコロンが必要
?>
以下のような記述法があるが、<?php ...が最も一般的で無難
- <script language="PHP"> ... </script>
- <?php .... ?>
- <? ..... ?>
- <% ..... %>
エラーが起きたときは ; 忘れを確認。
PHPはサーバ側で実行される
ソースはクライアント側には見えないところが、JavaScriptとの違い
PHPはHTML内に記述するが、PHPが含まれていることを示すため、拡張子を.phpに変更する
(※.phpと決まっているわけではなく、Apacheの設定による)
ちなみに、HTMLのままにしておくとPHPが実行されない。
コメントは、// ...と# ...と/* ... */
ヒアドキュメント(複数行の文字列の指定)
<<< ID 文字列1 文字列2 文字列3 ID
- IDには、任意の文字列を指定する。
- 空白は空白として扱われる
- ""や''も単なる文字として扱われる
例)
<?php
print <<< EOS
お元気ですか?<br />
いいお天気ですね。<br />
ではさようなら。
EOS;
?>
$name = '佐藤'.'さん'; //文字の連結
$name .= ' 'のように省略されていることが多いので注意
出力は、print ' ' または echo ' '
・echo '出身地:', '東京都'; のように続けて出力も可
・括らなければ数値型を扱える
echo "5 + 3 * 4 = ", 5 + 3 * 4, '<br />';
echo "(5 + 3) * 4 = ", (5 + 3) * 4;
' ' と " "の違い
・' "文字列" 'のように指定できる
・"${name}"は変数展開されるが、'${name}'は変数展開されない
変数について
・何も代入していない変数はNULLであるとみなされる(nullも同じ)
・代入や格納や比較の際、${name}="aaa"のように { }で括らないように注意
printでもprint $result; のように記述する
・型の宣言は必要ないが、型自体はあり、適切な型に変更される
・変数の型は gettype($var)で取得可能
参照
$num2 =& $num1;
とすると、参照を代入できる(ただのエイリアス)
定義
define("TAX", 0.05);
$price1 = 100 * (1 + TAX);
if文でfalseになるもの
- FALSE
- 整数の0と浮動小数点数の0.0
- 空文字""
- 文字列の"0"
- 要素の数が0の配列
- NULL
- メンバ変数の数がゼロであるオブジェクト
if文における型変換
if( '5' == 5 ) → 型変換されてTRUEになる
===
if文における型変換の関係で、
b === a → bとaの値が等しく型も等しい
という演算子がある
foreach
変数をコピーして取り出す(配列自体を変更できない)
foreach (配列変数 as 変数){ 実行する処理1; 実行する処理2; }
例)
$preflist = array('東京', '大阪', '名古屋');
foreach ($preflist as $pref){
print $pref;
}
参照を取り出す(配列自体を変更できる)
foreach (配列変数 as &変数){ 実行する処理1; 実行する処理2; }
※このブロックが終了したときに
unset($変数);
を実行するべき →誤って配列を壊さないように参照を解除する
キーの取り出し
foreach (配列変数 as キー変数 => 値変数){ 実行する処理1; 実行する処理2; }
例)
$preflist = array('Tokyo' => '東京', 'Osaka' => '大阪');
foreach ($preflist as $key => $value){
print $key.'=>'.$value;
}
連想配列
$result['eigo'] = 72;
$result['suugaku'] = 82;
$result = array('eigo' => 72, 'suugaku' => 82 );
と記述しても同じ
print_r($result);
resultが配列だったときに、
Array
(
[0] => 85
[1] => 92
[2] => 68
)
のように[キー] => 値という形式で表示してくれる
PHPの配列
- 連続している必要はない
- 負の値をキーにすることも可能
- 文字列をキーに指定することも可能(これは連想配列)
キーの自動付与
- ケース1
$var[] = 100; //[0]に入る
$var[] = 'Tokyo'; //[1]に入る
- ケース2
$var[12] = 3;
$var[7] = 35;
$var[] = 300; //前の最大の次なので、[13]に入る
- ケース3
$var[-3] = 53;
$var[] = 32; //前の最大値が負の場合は[0]に入る
- ケース4
$var = array(10 => '遠藤', '斉藤', '伊藤');
//キーの自動付与を使った例
多次元配列
$maker = array('富士通', 'NEC', 'Sony', 'Sharp');
$type = array('Note', 'Desktop');
$pc = array($maker, $type);
$pcはキーの自動付与を使った配列だから、
$pc[0] = $maker; $pc[1] = $type; と同じ
したがって、 $pc[0][1] == NECで、 $pc[1][0] == NOTEである。
関数定義と呼び出し
・定義
function 関数名(引数1, 引数2, ...){ ... }
・呼び出し
関数名(引数1, 引数2, ...);
・戻り値がある場合は、定義はそのままで最後にreturn ...;
呼び出しは、変数 = 関数名(引数1, 引数2, ...);で。
return
returnは関数ではないので括弧でくくる必要はないとあるが、くくってもエラーではない。
クラス
・宣言
class クラス名{
public メンバ変数名; //どこからでも
private メンバ変数名; //同じクラス内のみ
protected メンバ変数名; //同じクラス+子クラス
function メンバメソッド名(引数,...){
// クラスの中で行う処理
}
}
※functionの前にもアクセス演算子を付けることが可能
・オブジェクトの生成
$変数名 = new クラス名(引数);
・アクセス
$オブジェクト名->メンバ変数名;
$オブジェクト名->メンバメソッド名();
※$thisも使える
const
定数の定義。
defineも使えるが、クラス内部で定義したい場合にconstを使う。
const 定数名 = 値;
- $が頭に使ないので注意
- self::定数名でアクセス可能
コンストラクタ
メソッド名の部分を"__construct"とする。
class クラス名(){
function __construct(変数, 変数, ...){
// コンストラクタ内で行いたい処理
}
}