出力
printとecho二つあります。結論どちらも大して違いはありませんが、戻り値を返すかと引数を複数取れるかの違いがあります。
戻り値は常に1を返します。引数は一つしか取れません。C言語の名残で残っている関数です。
1 |
print('こんにちは'); |
echo
戻り値がvoidなので値を返さないです。また引数を複数とることも可能です。(下の例なら12を返します。)
1 |
echo 1,2; |
文字列のコーテーション
シングルコーテーション
単純な文字列になります。特別な理由がなければこれを使いましょう。
ダブルコーテーション
改行コードなどを入れることが可能です。
1 |
echo "こんにちは、\n2行目" |
また、中括弧で囲ってあげることで変数の式展開も可能です。
1 2 |
$hensu = "テスト3"; echo "{$hensu}です。" |
変数
1 2 3 4 5 6 7 8 9 |
//数字 $num = 123; echo $num; echo("<br>"); //文字 $str = '文字'; echo $str; |
変数の型を調べる
PHPは動的型付けの言語なので直接型を指定しませんが、代入したら型が決まっています。var_dumpという関数を使う事でどんな型かを調べる事が可能です。
1 2 3 4 |
echo("<br>"); var_dump($num); //int(123) echo("<br>"); var_dump($str); //string(6) "文字" |
変数の命名規則
- 先頭の文字は必ず「英字」か「_(アンダーバー)」にする。(数字だとエラーになります。)
変数同士を結合する。
.(ピリオド)を使えば文字を結合する事ができます。ただし、仮に数字同士を結合したとしても文字列型(string)になります。
1 2 3 4 5 6 |
//数字 $num1 = 123; $num2 = 456; $num3 = $num1 . $num2; echo($num3); //123456 var_dump($num3); //string(6) "123456" ←文字列になる。 |
.(ピリオド)を使えば文字を結合する事ができます。仮に数字同士を結合したとしても文字列型(string)になります。
1 2 3 4 5 6 |
//数字 $num1 = 123; $num2 = 456; $num3 = $num1 . $num2; echo($num3); //123456 var_dump($num3); //string(6) "123456" |
変数のスコープ
変数のスコープは下記の2つに分かれます。
- グローバルスコープ
- ローカルスコープ
グローバルスコープ
何のブロックにも囲まれていない変数です。
ローカルスコープ
関数等のブロックの中に含まれている変数です。そのブロック内でのみしか参照ができません。
例
1 2 3 4 5 6 7 |
$global_val = "グローバル"; function kansu(){ $local_val = "ローカル"; } echo $global_val; //グローバル echo $local_val; //何も出力されない |
実務では使うことはありませんが、下記のようにglobalキーワードを使えば関数内でもグローバルスコープの変数を使用する事が可能です。
1 2 3 4 5 6 7 8 |
$global_val = "グローバル"; function kansu(){ $local_val = "ローカル"; global $global_val; echo $global_val; //グローバル } kansu(); |
定数
定数はconstキーワードを使います。一度定義した定数を上書きをすることはできません。
1 2 3 4 5 |
const MAX = 10; echo MAX; echo("<br>"); const STR = 'あいう'; echo STR; |
また、レガシーな定数定義構文に「define」がありますが関数なのでconstより速度が落ちるので使える環境であればできるだけconstを利用するようにしましょう。
配列
定義方法
1 2 |
$array = [1,2,3]; echo $array[0]; //1 |
配列の中のデータをまとめてみる。
echoだと一つ一つしか確認する事ができませんが、var_dumpを使えばまとめて確認する事が可能です。
1 2 |
$array = [1,2,3]; var_dump($array); //array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } |
preタグで見やすくする。
そのままvar_dumpを使っただけだと見づらいのでpreタグで囲うことで縦に並べて見やすくする事が可能です。
1 2 3 |
echo("<pre>"); var_dump($array); //array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } echo("</pre>"); |
多次元配列を使う
1 2 |
$array = [[1,2,3],[4,5,6]]; var_dump($array); //array(2) { [0]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } [1]=> array(3) { [0]=> int(4) [1]=> int(5) [2]=> int(6) } }れ |
array_push
配列の末尾に新しい要素を追加する事が可能です。
1 2 3 |
$array = ['太郎','次郎']; array_push($array,'三郎'); var_dump($array); //array(3) { [0]=> string(6) "太郎" [1]=> string(6) "次郎" [2]=> string(6) "三郎" } |
foreach
foreachを使えば一つ一つ配列の要素を取り出せます。
1 2 3 4 |
$array = ['太郎','次郎']; foreach ($array as $value){ echo $value; // 太郎など } |
連想配列
定義方法
1 2 3 4 5 6 |
$person = [ 'name' => '太郎', 'age' => 25 ]; echo $person['name']; //太郎 var_dump($person); //array(2) { ["name"]=> string(6) "太郎" ["age"]=> int(25) } |
入れ子にする。
1 2 3 4 5 6 7 8 9 10 11 |
$persons = [ 'person1' => [ 'name' => '太郎', 'age' => 25 ], 'person2' => [ 'name' => '花子', 'age' => 23 ] ]; var_dump($persons); //array(2) { ["person1"]=> array(2) { ["name"]=> string(6) "太郎" ["age"]=> int(25) } ["person2"]=> array(2) { ["name"]=> string(6) "花子" ["age"]=> int(23) } } |
foreach
foreachを使えば連想配列から値の一覧を取得する事が可能です。
1 2 3 4 5 6 7 8 9 10 |
echo("<br>"); echo("<br>"); $persons = [ 'name' => '太郎', 'age' => 25 ]; foreach($persons as $key => $value){ echo $key; //nameやage echo $value; //太郎や25 } |
条件分岐
if文
1 2 3 4 5 6 7 8 |
$a = 5; if ( $a == 5 ){ echo "5です。"; } else if($a ==3){ echo "3です。"; }else{ echo "5ではありません。"; } |
elseやelse ifは使えますが可読性の点からあまり使わない方が良いと言われています。下記のようにifのみ使って記述するようにリファクタリングすると良いでしょう。
1 2 3 4 5 6 7 |
if ( $a == 5 ){ echo "5です。"; } if($a ==3){ echo "3です。"; } |
三項演算子
1 |
条件 ? 真 : 偽 |
switch文
PHPのswitch文は注意すべき点があるのでできればif文を使うようにすると良いでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$m = 2; switch($m){ case 1: echo '1です。'; break; case 2: echo '2です。'; break; case 3: echo '3です。'; break; default: echo 'その他です'; break; } |
上記のように記述すると型も含めて判定をする事ができません。型も含めて判定したい場合は下記のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$m = 2; switch($m){ case $m === 1: echo '1です。'; break; case $m === 2: echo '2です。'; break; case $m === 3: echo '3です。'; break; default: echo 'その他です'; break; } |
empty
emptyメソッドを使う事で変数が空白かどうか判定します。
1 2 3 4 |
$b; if(empty($b)){ echo "値が空です"; } |
論理演算子の種類
種類 | 説明 |
---|---|
!= |
ではない場合 |
!== |
値と型が異なっているかどうかチェックする。 |
== |
値が一致しているかチェックする。 |
=== |
値と型が一致しているかチェックする。 |
&& |
かつ(andという記述法でも良いが&&の方が多いです。) |
|| |
または(orという記述法でも良いが||の方が多いです。) |
ファイル操作の種類
PHPでのファイル操作は下記3種類のいずれかで行います。
- ファイル名型(ファイルごと)
- ストリーム型(1行ごと)
- オブジェクト型
ファイル名型
一番手軽にファイル操作する事ができます。
- file_get_contents
- file_put_contents
file_get_contents
ファイル内容を一括で全て出力できます。
1 2 |
$file = '.contact.dat'; echo file_get_contents($file); //ファイル内容が出力される。 |
file_put_contents
上書き
ファイルに第二引数で指定した内容を出力する事が可能です。ただ、全て上書きする挙動になるので注意です。
1 |
file_put_contents($file,"出力します。"); |
追記
第三引数にFILE_APPENDと指定する事で追記する事が可能です。\nで改行する事が可能です。
1 |
file_put_contents($file,"\n追記します。",FILE_APPEND); |
ストリーム型
- fopen
- flock
- fclose
- fgets
- fwrite
fopen
- ファイルを開く
- 読み取り専用か、書き込み専用か指定できます。
flock
- 排他制御とする。
- 他の誰かが開いていた場合に使えます。
fclose
- ロックを解除する。
実装例
1 2 3 |
$contents = fopen($file,'a+'); fwrite($contents,"\n".'追記'); fclose($contents); |
オブジェクト型
SplFileObject
この記事へのコメントはありません。