Search A.I.
Menu
ホーム

メールマガジン ホームページプログラミングテク

Windowsテク
Javaアプレット サンプル
Java Q & A
JavaScript Q & A
Perl Q & A
Perl レッスン
PHP レッスン
PHPテク
MS-DOS コマンド集
UNIX コマンド集
SQL コマンド集
SEの基礎講座
WEBシステム開発受注します
]無料フォームメール送信サービス
リンク集
PHP レッスン

1. PHP の基礎
2. PHPの文法、条件式
3. PHPの文法、条件式 - 続き
4. 配列について
5. ハッシュ配列について
6. 関数について
7. 関数について - 続き
8. 文字列操作関数
9. 配列操作関数
10. ファイル操作
11. ファイル操作 - 続き
12. パラメータの受け渡し
13. クッキーとセッション
14. 総合練習
15. メール送信
16. ファイルアップロード
17. クラスについて
18. クラスについて - 続き
19. MySQL
20. MySQL - 続き(1)
21. MySQL - 続き(2)
22. PostgreSQL
23. 総合練習
24. 総合練習解答



2. PHPの文法、条件式

今日は、PHPの文法、条件式について簡単に説明していきます。

■条件式
if文やfor文などの条件に使用する式は以下のようなものがあります。

== 等しい
!= 等しくない
< より小さい
> より大きい
<= 以下
>= 以上

&& and (論理積)
|| or (論理和)
! not (否定)
and && と同じ (論理積)
or || と同じ (論理和)

True 真
False 偽

条件文で変数の中を比較したり、大小を判定する時に使用します。

■if () 文 判定
if文は、プログラムでもっともよく使用する条件判定です。

if (条件1) {
条件1が真のとき
}
elseif (条件2) {
条件2が真のとき
}
else {
条件1も条件2も偽のとき
}

条件文の結果が 1, 2 などの数値の場合は、真 と同じ扱いになります。
0 の場合は 偽 となります。

-----------------------------------------------------------------
$a = 1;
if ($a == 1) { $b = 2; }

if ($a == 1) {
$b = 2;
}
// 上記は両方とも、$a の値が 1 だったら$b に 2 を代入する

if ($a) {
// $a が 2 でも真になるので注意
$b = 2;
}
else {
// $a が 0 の場合はこちらが実行される
$b = 4;
}

if ($a == 1 && $b == 2) {
// $a が 1 で、なおかつ $b が 2 の時にこちらが実行される
$c = 1;
}

$a = 'test';
if ($a == 'test') {
// $a が文字列「test」ならばこちらが実行される
$c = 1;
}

if ($a == 'error') {
// $a が「error」でなければこちらが実行される
$c = 1;
}
-----------------------------------------------------------------

■switch () 多重判定
if 〜 elseif 〜 elseの判定式が単純な比較式の場合、switch文を使った方が
便利です。

switch (式) {
case 値1:
break;
case 値2:
break;
default:
}

-----------------------------------------------------------------
switch ($a) {
case 1:
case 2:
print "<P>case1</P>\n"; // $a == 1 または $a == 2 の時実行される
break;
case 3:
print "<P>case2</P>\n";
break;
default:
print "<P>case else</P>\n";
}

// 文字列比較
switch ($a) {
case 'abc':
print "<P>case1</P>\n";
break;
case 'def':
print "<P>case2</P>\n";
break;
default:
print "<P>case else</P>\n";
}
-----------------------------------------------------------------

break; がないと、順に下の case が実行されますので、忘れないようにして
ください。

■for () ループ
for文は、ある条件まで初期値から、一定の増分でループさせたい場合に使用します。

for (初期値; 条件; 増分) {
break; // ループ脱出
continue; // 次のループへ
}

条件が偽になるまで、{} 内を繰り返し実行します。
始めに初期値の部分が実行され、{} 内の最後まで実行された後、増分の部分が実行
されます。

-----------------------------------------------------------------
for ($i = 1; $i <= 10; $i++) {
// $i を 1 から 10 までループさせ、カッコ内を実行する
$a[$i] = 2;
}

for ($i = 1, $j = 1; $i <= 10 and $j >= 0; $i++, $j++) {
// 複数の式を書くことも可能
$a[$i] = ++$j;
}

for (;;) {
// 無限ループとなるので、中でループ脱出する条件文を書かなければならならい
}
-----------------------------------------------------------------

無限ループになってしまうと、サーバがダウンしてしまうことがあるので、注意が
必要です。

■foreach () ループ
foreach文は、配列の中身を 0 から最後まで順番に取り出す時に使用します。

foreach (配列変数 as 代入変数) {
break; // ループ脱出
continue; // 次のループへ
}

-----------------------------------------------------------------
$ary = array('abc', 'def', 'ghi');

foreach ($ary as $a) {
print "$a<br>";
}
-----------------------------------------------------------------

上の文は、$aryの配列を 0 から 配列の終わりまでをループし、1 つずつ
$a に取得し、$aを出力しています。

上の文は、以下の処理と同じになります。

-----------------------------------------------------------------
$ary = array('abc', 'def', 'ghi');

for ($i = 0; $i < count($ary); $i++) {
print "$a[$i]<br>";
}
-----------------------------------------------------------------

count(配列変数)で、配列の最大数を取り出します。
配列については、別の機会に詳しく説明します。

■while () ループ
while文は、ある条件が満たす間、{}内を繰り返し実行します。

while (条件) {
条件が真のときループ
break; // ループ脱出
continue; // 次のループへ
}

■do 〜 while () ループ
do 〜 while文は、ある条件が満たされるまで、{}内を繰り返し実行します。
do 〜 while文の場合は、ループの中身が一度は必ず実行されます。

do {
条件が偽りのときループ
break; // ループ脱出
continue; // 次のループへ
} while (条件);

■exit 脱出
PHPを途中で終了する場合や、関数を抜ける場合は、以下の文を使用します。

exit; // PHP 終了
return; // 関数終了

関数については、別の機会に詳しく説明します。

 

★今日のまとめサンプルプログラム
-----------------------------------------------------------------
<HTML>
<BODY>
<?

print '[for文]<br>';

$week = array('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat') ;
for ($i = 0; $i <= count($week); $i++) {
print $week[$i] . '<br>';
}

print '<br>[foreachで記述]<br>';

foreach ($week as $ary) {
print $ary . '<br>';
}

print '<br>[whileで記述]<br>';

$i = 0;
while ($i <= count($week)) {
print $week[$i++] . '<br>';
}

// よくない例
print '<br>[whileの別バージョン]<br>';
$i = 0;
while (1) {
// 無限ループ
print $week[$i++] . '<br>';
if ($i > count($week)) {
// 無限ループを脱出
break;
}
}

?>
</BODY>
</HTML>
-----------------------------------------------------------------

■解説
いくつかのループの記述方法を書いてみました。すべて同じ配列の中身を表示する
プログラムです。

出力結果は、全部同じになっていますが、記述形式を比較してみてください。

 

★課題
1. 下の文をwhile文を使って、書き直してください。

for ($i = 0; $i < 9; $i++) {
print $i;
}

2. 下の47都道府県を配列に格納し、foreach文を使って、HTML中に出力して
ください。

"北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県",
"茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県",
"新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", "岐阜県",
"静岡県", "愛知県", "三重県", "滋賀県", "京都府", "大阪府", "兵庫県",
"奈良県", "和歌山県", "鳥取県", "島根県", "岡山県", "広島県", "山口県",
"徳島県", "香川県", "愛媛県", "高知県", "福岡県", "佐賀県", "長崎県",
"熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県"

 

★前回の課題の解答
1. 以下の2つの変数の加算、減算、掛け算、割り算、余りの結果をHTML中に出力
してください。
42
19

→下のサンプルを参照してください。

2. 以下の4つの文字列を配列に格納し、HTML中に文字列をつなげて出力してください。
'This'
' is '
'a test '
'program.'

→下のサンプルを参照してください。

-----------------------------------------------------------------
<HTML>
<BODY>
<?
// 1.の解答例

$a = 42;
$b = 19;

print "$a + $b = ";
print $a + $b;
print '<br>';

print "$a - $b = ";
print $a - $b;
print '<br>';

print "$a * $b = ";
print $a * $b;
print '<br>';

print "$a / $b = ";
print $a / $b;
print '<br>';

print "$a % $b = ";
print $a % $b;
print '<br><br>';

// 2.の解答例

$str = array('This', ' is ', 'a test ', 'program.');
print $str[0] . $str[1] . $str[2] . $str[3];

?>
</BODY>
</HTML>
-----------------------------------------------------------------

■解説
$c = $a + $b;
のように結果を格納する変数を作ってももちろんOKです。

配列の部分は今日ご紹介したfor文でループして表示させると楽ですね。




前の章へ 次の章へ


このエントリーをはてなブックマークに追加


OfficeLance

お問い合わせはこちらから