Search
  1. 構文〔PHPスクリプト、コメント、テキスト出力(echo, print, ヒアドキュメント)の書き方〕
  2. 変数の型
  3. 変数名の命名規則、変数の代入(値渡しと参照渡し)
  4. 定数
  5. 演算子〔優先順位、三項演算子、加算子/減算子、代数演算子、比較演算子、エラー演算子など〕
  6. ファイルの読込〔include(), require()〕
  7. 制御文(ループ、条件分岐など)
  8. 関数の引数について〔値渡し, 参照渡し〕
  9. 関数の返り値について

構文
PHPスクリプト、コメント、テキスト出力(echo, print, ヒアドキュメント)の書き方

unknown

PHPスクリプトの書き方

開始タグと終了タグ

PHPスクリプト部分は、<? ~ ?>または<?php ~ ?>で囲みます。 XMLやXHTMLにPHPを埋め込む場合は、後者の<?php ~ ?>を使用することが標準規格で決められています。

<?
echo "最もシンプルな方法";
?>

<?php
echo "XML や XHTML ドキュメントにPHPを埋め込む場合";
?>

文の記述

PHPスクリプトは文で構成されています。 代入、関数呼び出し、ループ、条件文、空の文が使用できます。

<?
/* PHPは命令文の最後のセミコロン(;)は任意 */
echo 'テストです<br>'
?>

<?
/*
複数の命令文を記述する場合は、セミコロンで区切る
付け忘れるとParse Error(文法エラー)が発生する
*/
$str 'テストです'; echo $str."<br>\n";
?>

<?
/*
PHPコードブロックの終了タグは省略可
直後に改行がある場合もセミコロンを含んだものになる
*/
?>
<? echo 'テストです<br>' ?>

<?
/*
終了タグは自動的にセミコロンが含まれているものと
認識されるため、スクリプトの最終行のセミコロンも省略可
*/
$str '終了タグを省略しました';
echo $str."<br>\n";

コメントの記述

コメントアウトしたい部分は、1行コメントなら先頭に//または#を付け、複数行コメントなら/* ~ */で囲みます。

<?
// 1行コメント

# 1行コメント

/*
複数行にわたって
コメントを記述する
*/
?>

コメント部分は無視されるので、'これは 例です。'と出力される
<p>これは <?php # echo 'シンプルな';?> 例です。</p>

テキストの出力

テキストを出力するには、echo()print()ヒアドキュメントのいずれかを使用します。

echo()

void echo( string arg1 [, string ...] )

指定した引数を全て出力します。 echoは関数ではなく言語構造なので、使用する際に括弧は不要です。 引数を複数指定する場合は、カンマまたはドットで連結します。 <? echo "Hello!" ?>を省略して、<?="Hello!";?>とも記述できます。

<?
echo "Hello! \"PHP User\"<br>\n";

echo "Hello!
I'm \"PHP User.\"<br>\n";

$fruits=Array("a"=>"apple","b"=>"banana");
$color="red";

/* 配列の値を命令文に含める場合は、{}で括る */
echo "{$fruits['a']} is $color<br>\n";
//apple is red

/* ドットで連結 */
echo $fruits['a'] . " is " $color "<br>\n";
//apple is red

/* カンマ区切りで連結 */
echo $fruits['a'], " is "$color"<br>\n";
//apple is red

/* 変数名を出力する時は、シングルクォート(')を使用 */
echo '$fruit is $color<br>'."\n";
//$fruit is $color

/*
echo は関数ではないため三項演算子では使用不可。
以下のコードは文法エラー(Parse error)になる
($some_var) ? echo 'true' : echo 'false';
 しかし、print は関数のように動作する為、三項演算子でも動作する。
($some_var) ? print 'true' : print 'false';
echo を使う場合は、下記のようにする
*/
echo ($some_var) ? 'true''false';
//false

/* ヒアドキュメント使用 */
echo <<< HIRE
Hello! "PHP User"
HIRE;
//Hello! "PHP User"
?>

print()

int print( string arg )

指定した文字列を出力し、常に1を返します。 printは関数ではなく言語構造なので、使用する際に括弧は不要です。 文字列を連結する場合は、ドットで連結します。 <? print "Hello!" ?>を省略して、<?="Hello!";?>とも記述できます。

<?
print "Hello! \"PHP User\"<br>\n";

print "Hello!
I'm \"PHP User.\"<br>\n";

$fruits=Array("a"=>"apple","b"=>"banana");
$color="red";

/* 配列の値を命令文に含める場合は {}で括る */
print "{$fruits['a']} is $color<br>\n";
//apple is red

/* ドットで連結 */
print $fruits['a'] . " is " $color "<br>\n";
//apple is red

/* 変数名を出力する時は シングルクォート(')を使用 */
print '$fruit is $color<br>'."\n";
//$fruit is $color

/* print() は関数のように動作する為、三項演算子でも動作する */
($some_var) ? print 'true' : print 'false';
//false 

/* また下記のようにも記述可能 */
print ($some_var) ? 'true''false';
//false

/* ヒアドキュメントを使用 */
print <<< HIRE
Hello! "PHP User"
HIRE;
//Hello! "PHP User"
?>

ヒアドキュメント

<<< HIRE
HIRE;

識別子は、始めと終わりが同じ文字列になるように記述します。 HIRE、HTML、EOM などのアルファベットの大文字であれば自由に指定可能です。 ヒアドキュメントでは、改行する場合に改行文字が不要なため、HTML文をそのまま記述できるという利点があります。

  • 始めの識別子の前に空白スペースを入れないこと。
  • 終わりの識別子とセミコロンの間に空白スペースを入れないこと。
  • 行末は空白文字で終わってはいけません。必ず改行で終わること。
<?
$array = Array("aaa","bbb","ccc");
$var 1;

/* 変数に格納してから出力 */
$htm = <<< HIRE
<p>
ヒアドキュメントで出力<br>
$var<br>
$array[$var]<br>
{$array[$var]}
</p>
HIRE;
echo $htm;

/* そのまま出力 */
echo <<< HIRE
<p>
ヒアドキュメントで出力<br>
$var<br>
$array[$var]<br>
{$array[$var]}
</p>
HIRE;
?>

その他の記述例

PHPは終了タグ?>を見つけると、それ以降に新たに開始タグ<?を見つけるまでの内容を出力するため、以下の例のように記述する事も可能です。

<? if($f=="morning"){ ?>
おはようございます
<? }elseif ($f=="noon"){ ?>
こんにちは
<? }else{ ?>
こんばんは
<? ?>

変数の型

unknown

PHPでは型宣言が不要です。 変数の型は、PHPが実行時に決定してくれます。

型を強制的に指定したい場合には、変数をキャストするか、settype()関数を使用します。 型を正確に知りたい場合は、var_dump()関数を使って確認できます。

8種類の基本型
4種類のスカラー型論理値'boolean' ※PHP4.2.0以降は、'bool'
整数'integer' ※PHP4.2.0以降は、'int'
浮動小数点'double' ※PHP4.2.0以降は、'float'
文字列'string'
2種類の複合型配列'array'
オブジェクト'object'
2種類の特別な型リソース'resource'
ヌル'null' ※PHP4.2.0以降
<?
/* 変数を、整数→文字列にキャスト */
$foo 10;                 // 整数
var_dump($foo);            //int(10)
$foo = (string) $foo;      // 文字列に型変更
var_dump($foo);            //string(2) "10"

/* settype()関数の使用例 */
$bar true;                // 論理値
var_dump($bar);             //bool(true)
settype($bar"string");    // 文字列に型変更
var_dump($bar);             //string(1) "1"
?>

変数名の命名規則、変数の代入(値渡しと参照渡し)

unknown

PHPでは変数の初期化が不要です。 初期化されていない変数の値は、その変数の型のデフォルト値FALSE0、空文字列、、二項演算子、空の配列など)が適用されます。

変数名のつけ方

PHPの変数は、変数名の先頭にドル記号を付けます。 大文字小文字は区別されます。 変数名には、文字(a-z、A-Z、0x7f-0xffのASCII文字)またはアンダースコアから始まる名前を付けられます。

$_var, $_1var, $var1
×$1var ※数値から始まる変数名は指定不可。

変数の代入と参照による代入

変数の代入

$a = $b;よる変数の代入は、$bの値を$aコピーします。 そのため$bの値を変更しても、$aの値は変わりません。

変数の参照による代入

$a = &$b;による変数の代入は、$bの値を$a参照渡しします。 そのため$bの値を変更すると、$aの値も変更されます。 このような参照渡しによる代入をするには、代入する変数の先頭に&を付けます。

<?
$foo 'あ';   // 値'あ'を$fooに代入
$bar = &$foo;  // $fooを$barにより参照渡し

$foo 'い';
echo $bar;  // 'い'
echo $foo;  // 'い' $bar の値を変更すると、参照渡しのため $foo の値も変更される
?>

定数

unknown

定数とは、値に名前をつけたものです。変数と違い、値をスクリプト実行中に変更することはできません。 一度定義した定数を未定義・再定義とすることはできないので、不変的な値につけるものです。 定数は、どこからでも参照可能で、スカラー値としてのみ評価されます。

配列を定数にすることはできません。

定数についての詳細は下記のコンテンツをどうぞ。

演算子
優先順位、三項演算子、加算子/減算子、代数演算子、比較演算子、エラー演算子など

unknown

演算子とは、式から別の値を返すもの。 単項演算子二項演算子三項演算子の3つの種類に分けられます。

演算子の種類
単項演算子ひとつの値に対してのみ作用する演算子。
!(否定演算子)、++(加算子)など。
二項演算子PHPで使える演算子のほとんどが含まれる。
三項演算子(式1) ? (式2) : (式3)
<?
/* 三項演算子を使用しない場合 */
if($checked) echo "<input type=checkbox name=chk1 checked>";
else echo "<input type=checkbox name=chk1>";

/* 三項演算子を使用した場合(1行にまとめられる)*/
echo "<input type=checkbox name=chk1".($checked " checked" "").">";
?>

演算子の優先順位

例えば、if ( ( $a >= 10 ) || ( $a <= 20 ) ) { ... }のように括弧を使用すると、優先順位を指定できます。 少し複雑な比較をする場合は、括弧を使用しておくと見た目にも優先順位が分かりやすくなります。

演算子の優先順位 (優先度が高い順)
結合時の評価演算子追加情報
非結合newnew
left[array()
非結合++ --加算子/減算子
非結合! ~ - (int) (float) (string) (array) (object) @
left* / %代数演算子
left+ - .代数演算子 そして 文字列演算子
left<< >>ビット演算子
非結合< <= > >=比較演算子
非結合== != === !==比較演算子
left&ビット演算子 そして リファレンス
left^ビット演算子
left|ビット演算子
left&&論理演算子
left||論理演算子
left? :三項演算子
right= += -= *= /= .= %= &= |= ^= <<= >>= 代入演算子
leftand論理演算子
leftxor論理演算子
leftor論理演算子
left,さまざまな利用法

加算子・減算子 $a++, ++$a, $a--, --$a

加算子・減算子はbool型の値には何も変更を加えません。 NULLに減算子を適用しても何も起こりませんが、NULLに加算子を適用すると1になります。

<?
/* 加算子 */
$a 10; echo $a++."<br>"//10
$a 10; echo ++$a."<br>"//11

/* 減算子 */
$a 10; echo $a--."<br>"//10
$a 10; echo --$a."<br>"//9

/* 例 */
$item[1][0] = "000";
$item[1][1] = "111";
$item[1][2] = "222";

$id 1$cd 0;
echo $item[$id][$cd++]."<br>";  //000
echo $item[$id][$cd++]."<br>";  //111
echo $item[$id][$cd++]."<br>";  //222

$id 1$cd 0;
echo $item[$id][$cd++]."<br>";  //000
echo $item[$id][++$cd]."<br>";  //222

$id 1$cd 0;
echo $item[$id][$cd]."<br>";    //000
echo $item[$id][++$cd]."<br>";  //111
echo $item[$id][++$cd]."<br>";  //222
?>

代数演算子 -、 +、 *、 /、 %

代数演算子
機能意味
-$a負にする$a の逆
$a + $b加算$a および $b の合計
$a - $b減算$a と $b の差
$a * $b乗算$a および $b の積
$a / $b割算$a および $b の商 ※常にfloat型の値を返す
$a % $b剰余$a を $b で割った余り ※$a が負の場合、$a % $b は負の値となる
<?
/* 加算 */
$a 10 5;  // 15
/* 減算 */
$b 10 5;  // 5
/* 乗算 */
$c 10 5;  // 50
/* 割算 */
$d 10 5;  // 2
/* 剰余 */
$e 4;   // 1
?>

ビット演算子 &、 |、 ^、 ~、 <<、 >>

整数における特定のビットをオンまたはオフにします。 左辺と右辺の値が共に文字列の場合は、文字がASCIIコードに変換されて比較されます。

ビット演算子
機能意味
$a & $bビット積$a および $b の両方にセットされているビット
$a | $bビット和$a または $b のどちらかにセットされているビット
$a ^ $b排他的論理和$a または $b にセットされており、両方にセットされていないビット
~ $a否定$a にセットされているビットはセットせず、そうでないものは逆にする
$a << $b左シフト$a のビットを左に $b ビットシフトする(各シフトは\2をかける\ことを意味します)
$a >> $b右シフト$a のビットを右に $b ビットシフトします (各シフトは "2で割る" ことを意味します)
<?
echo 12 9;  // '5'

/* バックスペース文字を出力(ascii 8)*/
echo "12" "9";  // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8

/* ascii値の #0 #4 #0 #0 #0 を出力 */
echo "hallo" "hello";  //'a' ^ 'e' = #4
?>

比較演算子 ==、 ===、 !=、 <>、 <、 >、 <=、 >=

整数を文字列と比較する場合は、文字列が数値に変換されて比較されます。 数値文字列を比較する場合は、整数として比較されます。

比較演算子
機能意味
$a == $b等しい$a が $b に等しい時にTRUE
$a === $b等しい$a が $b に等しく同じ型でである場合にTRUE (PHP4~)。
$a != $b等しくない$a が $b に等しくない場合にTRUE
$a <> $b等しくない$a が $b に等しくない場合にTRUE
$a !== $b等しくない$a が $b と等しくないか、同じ型でない場合にTRUE (PHP4~)。
$a < $bより少ない$a が $b より少ない時にTRUE
$a > $bより多い$a が $b より多い時にTRUE
$a <= $bより少ないか等しい$a が $b より少ないか等しい時にTRUE
$a >= $bより多いか等しい$a が $b より多いか等しい時にTRUE
<?
#数値と文字列を比較(文字列が数値に変換されて比較される)
$str "1";
$num 1;
echo ($num == $str) ? "等しい" "等しくない""<br>\n"// 等しい

#数値文字列同士を比較(整数として比較される)
$a "1";
$b "1";
$c 1;
echo (($a == $b) && ($b ==$c)) ? "等しい" "等しくない""<br>\n"// 等しい
?>

エラー演算子 @

PHP関数を使った式の前にエラー演算子(@)を付けると、その式でエラーが発生しても無視されるので、 エラーメッセージが画面に表示されません。 エラーメッセージに、エラーが発生したファイルのパスなどセキュリティ上表示したくない情報も含まれる場合に使用すると安全です。

エラー演算子(@)は、式のみで動作します。

変数、関数、include()、定数など値を取得できるものの前に付けられます。
×クラス定義、条件構造(if や foreach など)の前には付けられません。
<?
if(@file_exists("sample.php")){
    @include("sample.php");
}
?>

論理演算子 and、 or、 xor、 !、 &&、 ||

論理積演算子論理和演算子がそれぞれ2種類あるのは、演算が行われる際の優先順位が異なるためです。

論理演算子
機能意味
$a and $b$a && $b論理積$a および $b が共にTRUE の場合にTRUE
$a or $b$a || $b論理和$a または $b のどちらかがTRUE の場合にTRUE
$a xor $b排他的論理和$a または $b のどちらかがTRUE でかつ両方ともTRUE でない場合にTRUE
! $a否定$a がTRUE でない場合TRUE
<?
$a "a";
$b "b";

echo ($a == "a" && $b == "b") ? "true" "false""<br>\n";  // true

echo ($a == "a" || $b == "bb") ? "true" "false""<br>\n";  // true

if ($a != $b) { echo "等しくない<br>\n"; }  // 等しくない

echo (!$a) ? "true" "false";  // false
?>

文字列演算子

文字列演算子
機能意味
$a . $b連結$b と $a を結合した文字列を返す。
$a .= $b結合代入$b に $a を追加した文字列を返す。
<?
/* 結合演算子 */
$a "あいうえお";
$k "かきくけこ";
echo $a $k ."<br>\n";  //あいうえおかきくけこ

/* 結合代入演算子 */
$str "あいうえお";
$str .= "かきくけこ";
echo $str "<br>\n";  // あいうえおかきくけこ
?>

配列演算子

配列の比較は、同じキーと値を保持している場合に「等しい」とみなされます。

配列演算子
機能意味
$a + $b結合$a および $b を結合する。左辺の配列に右辺配列の要素を追加する。重複キーは上書きされる。
$a == $b同等$a および $b のキー/値のペアが等しい場合にTRUE
$a === $b同一$a および $b のキー/値のペアが等しく、その並び順が等しく、 かつデータ型も等しい場合にTRUE
$a != $b等しくない$a が $b と等しくない場合にTRUE
$a <> $b等しくない$a が $b と等しくない場合にTRUE
$a !== $b同一でない$a が $b と同一でない場合にTRUE
<?
$a = array("a" => "apple""b" => "banana""c"=>"strawberry");
$b = array("a" => "apple""b" => "strawberry");

$c $a $b// Union of $a and $b
echo "Union of \$a and \$b: <br>\n";
print_r($c); echo "<br>\n";

$c $b $a// Union of $b and $a
echo "Union of \$b and \$a: <br>\n";
print_r($c);

/*
Union of $a and $b:
Array ( [a] => apple [b] => banana [c] => strawberry )
Union of $b and $a:
Array ( [a] => apple [b] => strawberry [c] => strawberry )
*/
?>

ファイルの読込
include(), require()

unknown

bool include ( string $ファイル名 )
bool require ( string $ファイル名 )

include()require()は指定したファイルを読み込みます。 include()は、ファイルが既に読み込まれている場合にTRUEを返します。 失敗した場合はE_WARNINGレベルのエラーが発生します。 require()の場合は失敗した場合にFatal Errorが発生します。

指定されたファイルが見つからない場合、include()は読込処理を続けますが、require()は読込処理を停止します。 そのため、指定されたファイルが見つからない場合に処理を停止するには、require()を使用して下さい。

<?
/* 【a.txt】の内容
aaaaaa
*/

if (require("a.txt")) { }  // 既に読み込まれている 
else require("a.txt");

if (include("a.txt")) { }  // 既に読み込まれている
else include("a.txt");

//aaaaaaaaaaaa
?>

<?
/* 【item.txt】の内容
<?
$apple = "リンゴ";
$banana = "バナナ";
*/
include("item.txt");
echo "$apple と $banana はフルーツです";
?>

ファイルを1回だけ読み込む

bool include_once ( string $ファイル名 )
bool require_once ( string $ファイル名 )

include()require()と違い、ファイルを1回だけしか読み込みません。 既にファイルが読み込まれている場合は、TRUEを返します。 スクリプト実行中に同じファイルが何度も読み込まれる場合に、関数が再定義されたり、変数に値が再代入されてしまうのを防ぐために使用します。

PHP4以下のバージョンにおいて、Windows環境では、指定したファイル名の大文字小文字の区別がされません('a.php'と'A.php'は別ファイル扱い)でしたが、PHP5からは区別されるようになりました。

<?
/* a.txt の中身
aaaaaa
*/
if (require_once("a.txt")) { } // 既に読み込まれている 
else require_once("a.txt");

if (include_once("a.txt")) { } // 既に読み込まれている
else include_once("a.txt");

//aaaaaa ← require_onceで読み込まれている為、include_onceでは読み込まれない
?>

<?
/* item.txt の中身
<?
$apple = "リンゴ";
$banana = "バナナ";
*/
include_once("item.txt");
echo "$apple と $banana はフルーツです";
?>

制御文(ループ、条件分岐など)

unknown

ループ

break

<?
/* ループを抜ける */
$cnt=0;
while (true) {
    $cnt++;
    echo $cnt " "// 1 2 3
    if($cnt == 3) break; // 3の時、ループを抜ける
}
?>

continue

<?
/* ループを飛ばす */
for($cnt 0$cnt 3$cnt++){
    if($cnt == 1) continue;  // 1の時、ループを飛ばす
    echo $cnt " ";         // 0 2
}
?>

for

<?
/* ループ*/
for($cnt 100$cnt 150$cnt+=10){
    echo $cnt " ";  // 100 110 120 130 140
}
?>

foreach

<?
/* ループ*/
$fruit = array(
    "a"=>"apple",
    "b"=>"banana"
);
foreach($fruit as $key => $value){
    echo $key "=>" $value "<br>";
}
/*
a=>apple
b=>banana
*/
?>

while

<?
/* ループ*/
$cnt 0;
while ($cnt 5) {
    echo $cnt " ";  // 0 1 2
    $cnt++;
    if($cnt == 3) break;  // 3になったら抜ける
}
?>

do ... while

<?
/* ループ */
$cnt=0;
do{
    echo $cnt " ";  // 0 1
    $cnt++;
} while ($cnt != 2);  // 2になるまで繰り返す
?>

条件分岐

if

<?
/* 条件分岐 */
$flag 1;
if ($flag == 1) {
    echo "a";
} elseif ($flag == 2) {
    echo "aa";
} else {
    echo "aaa";
}
// a
?>

switch

<?
/* 条件分岐 */
$a "i";
switch ($a){
    case "a":
        echo "あ";
        break;
    case "i":
        echo "い";
        break;
    default:
        echo "その他";
        break;
}
// い
?>

返り値

return

<?
/* 関数の実行を停止し、引数を返り値として返す */
function func ($str) {
    $str "<p>" $str"</p>";
    return $str;
}
echo func("あいうえお");  //<p>あいうえお</p>
?>

関数の引数について
値渡し, 参照渡し

unknown

PHPでは値渡し(デフォルト)、参照渡しデフォルト引数値がサポートされています。 引数を複数指定する場合は、カンマ区切りで指定します。 デフォルト引数値でない引数を省略するとエラーになるので、通常の引数は全て何らかの値を指定する必要があります。 参照渡しにする場合は、引数の先頭に&を付けます。

参照渡しの使用例

<?
/* 引数に参照渡しを指定した例 */
function func ($array, &$array_max) {
    $array_max count($array);
    return array_keys($array);
}
$fruit = array("apple","banana");
$keys func ($fruit$fuit_max);
print_r($keys);  // Array ( [0] => 0 [1] => 1 ) 
echo $fuit_max;  // 2
?>

デフォルト引数値の使用例

<?
/* 引数を省略した場合に、デフォルト引数の値が使用される */
function func ($weaz "晴れ") {
   return "今日の天気は" $weaz "です<br>\n";
}

/* 引数を省略 */
echo func();  //今日の天気は晴れです

/* 引数を指定 */
echo func("雨");  //今日の天気は雨です
?>

関数の返り値について

unknown

returnによりあらゆる型の値を返すことができます。 複数の値を返すには、返り値を配列で返します。 関数内でreturn false;とすれば、関数の実行を任意の箇所で終了させることができます。

複数の値を返す例

<?
/* 複数の値を返したい場合は返り値を配列で返す */
function func ($array) {
    $ary = Array();
    foreach($array as $k => $v){
        if($k == "a"){
            $ary[] = $k;
            $ary[] = $v;
        }
    }
    return $ary;
}
$fruit = array("a"=>"apple""b=">"banana");
list($key$value) = func ($fruit);
echo "key=$key, value=$value<br>";
// key=a, value=apple
?>

引数を参照渡しにした例

<?
/* 引数に参照渡しを指定した例 */
function func ($array, &$array_max) {
    $array_max count($array);
    return array_keys($array);
}
$fruit = array("apple","banana");
$keys func ($fruit$fuit_max);
print_r($keys);  // Array ( [0] => 0 [1] => 1 ) 
echo $fuit_max;  // 2
?>

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women