基礎ゼミ 配布資料
PHP 言語プログラミングの基礎
2014 年 6 月 24 日改訂版
PHP 言語プログラムの実行手順
1
PHP 言語によるプログラムの作成から実行までの手順は以下に示す通りです。
1. プログラムの作成 テキストエディタを起動し, PHP プログラムを作成します. ソースプログ
ラムのファイル名の拡張子は「.php」とします.以下は,作成例「hello.php」です.
リスト 1: hello.php
1 <?php
2
p r i n t ” H e l l o World ! \ n” ;
3 ?>
2-a. コンソールから実行 1で作成したプログラムファイルのあるフォルダに移動し,プロンプ
トより,以下のように「php ファイル名」と入力することで,プログラムが実行されます.
$ php hello.php Hello World!
$
プログラムの実行が終了すると,再びプロンプトが表示されます.
もし,プログラムが終了せず,プロンプトが再表示されない場合は, Control キーと c キーを同時
押しすることで,動作中のプログラムを途中で強制終了させることが可能です.
2-b. ウェブブラウザから実行 1で作成したプログラムファイルを,PHP が動作するウェブサー
バにアップロードし,ウェブブラウザからその該当 URL(http://ホスト名/hello.php)に接続する
ことで,プログラムが実行され結果が表示されます.
図 1: ウェブブラウザから PHP プログラムを実行した例.
もしプログラムが正しく動作しなかった場合,エラー出力が表示されます 1 .
3. デバッグ プログラムに構文エラーがあり正常に終了しない場合や,アルゴリズムに欠陥があ
り実行可能プログラムが正しく動作しない場合は,ソースプログラムの修正が必要です.この修正
作業はデバッグ (debugging) と呼びます.
1
エラー出力を表示させるためには,設定ファイル「php.ini」の 462 行目付近で「error reporting = E ALL」,ま
た,479 行目付近で「display errors = On」と変更しておく必要があります.
1
2
文字列を表示する
例0
hello2.php
画面上に,文字を表示させるプログラム.
リスト 2: hello2.php
1 <?php
2
// コ メ ン ト 文 1
3
# コメント文2
4
/∗ コ メ ン ト 文 3
5
コ メ ン ト 文 3 ∗/
6
7
echo ” H e l l o World ! \ n こ ん に ち は \n” ;
8
p r i n t ’ H e l l o World ! \ n こ ん に ち は \n ’ ;
9 ?>
【解説】
• 一般的な Linux 環境および Windows 環境では,\(バックスラッシュ) 記号 が =
Y (円) 記号で
表示されます.入力の際は, \ キーと Y キーのいずれからでも構いません.
• 1,9 行目:PHP プログラムのはじまりに「<?php」を,終わりに「?>」を,必ず記入します.
• 2-8 行目:括弧(<? ∗ ? >)で囲まれた内側は,範囲(スコープ)内であることが視認し易い
ように, TAB キーで字下げします.
• 2-5 行目:
「//」または「#」の以降の部分は,その行末までコメント文として無視されます.
「/*」から「*/」の間の部分は,改行も含めて,コメント文として無視されます.
• 7,8 行目:
– print/echo 命令は「"(ダブルクオーテーョン)」または「’(シングルクオーテーョン)」
で囲まれた範囲の文字列を画面に表示します.
– 「\n」は,ダブルクオーテーョンで囲まれた場合は特殊文字として認識され,改行に置
き換わります.シングルクオーテーョンで囲まれた場合は,特殊文字として認識されず,
そのまま文字列として表示します.
– PHP 言語における命令の最後は原則として「; (セミコロン)」で終わります.
【実行結果】
$ php hello2.php Hello World!
こんにちは
Hello World!\n こんにちは\n
$
2
演算処理
3
例1
sisoku.php
2つの引数の四則演算を行うコンソールプログラム.
リスト 3: sisoku.php
1 <?php
2
var dump ( $ a r g v ) ;
3
4
$Add = $ a r g v [ 1 ] + $ a r g v [ 2 ] ;
5
$Sub = $ a r g v [ 1 ] − $ a r g v [ 2 ] ;
6
$Mul = $ a r g v [ 1 ] ∗ $ a r g v [ 2 ] ;
7
$Div = $ a r g v [ 1 ] / $ a r g v [ 2 ] ;
8
$Rem = $ a r g v [ 1 ] % $ a r g v [ 2 ] ;
9
10
p r i n t ’ Add = ’ . $Add . ’ , ’ . ’ Sub = ’ . $Sub . ” \n” ;
11
p r i n t ”Mul = $Mul , Div = $Div , Rem = $Rem\n” ;
12 ?>
【解説】
• コマンドプロンプトから,php コマンドを実行した場合,$argv[ ] 配列 2 に,その引数の情
報が記録されます.$argv[n] と記述することで,配列の n 番目の要素を指定します.
• 2 行目:var dump 関数は,指定した変数の情報を出力します.
• 4∼8 行目:
– 数式は,等号(=)の右辺の計算結果を,左辺の変数に代入することを意味します.
– 変数とは,値を格納するための箱です. $変数名 = 値; のように記述して作成し,値を
格納します.
– 「+」,「-」, 「*」,「/」,「%」は算術演算子であり,
「*」は乗算,
「/」は除算,
「%」は剰
余(割り算の余り)です.
• 10,11 行目:
– シングル or ダブルクォーテーション (「’」or「”」) で囲まれた文字列と変数は,
「.(ピリ
オド)」で連結できます.
– 変数は,ダブルクオーテーション(”)で囲まれた場合も,囲まれない場合も,格納され
た値が出力されます.
2
配列は変数の一種です.詳細は4節を参照して下さい.
3
【実行結果】
$ php sisoku.php 4 3 array(3) {
[0]=>
string(10) "sisoku.php"
[1]=>
string(1) "4"
[2]=>
string(1) "3"
}
Add = 7, Sub = 1
Mul = 12, Div = 1.3333333333333, Rem = 1
$
【演習1】 例1のプログラムを変更し,出力結果を以下のように変更せよ.ここで,割り算(/)
の計算結果は「商 (剰余)」である.なお,2つの引数には,常に整数が入力されると仮定する.
$ php sisoku-e1.php 7 3 7
7
7
7
+
*
/
3
3
3
3
=
=
=
=
10
4
21
2(1)
$
ヒント: 数値の小数点以下を切り捨てる関数を探しましょう!
4
4
条件判断と分岐処理について(if 文)
if 文の構文 (その )
if ( 条件式 ) {
処理 1 ;
処理 2 ;
…
処理 n ;
}
例2
score1.php
【解説】『条件式』が
• 成り立つ:
「処理 1,2,· · · ,n」を順に実行.
• 成り立たない:何もしない.
引数として数値を入力し,60 以上ならば“ OK! ”と表示するプログラム.
リスト 4: score1.php
1 <?php
2
i f ( $ a r g v [ 1 ] >= 6 0 ) {
3
p r i n t ’OK ’ ;
4
}
5 ?>
【解説】
• 2 行目 if 文による判別
$argv[1] >= 60 は,
「$argv[1](1つ目の引数) が 60 以上」という条件を意味します.
他にも同様に,
x<=60 は「x が 60 以下」,
x>60 は「 x が 60 より大きい」,
x<60 は「x が 60 未満」,
x==60 は「x が 60 と等しい」
x!=60 は「x が 60 と等しくない」
という条件を意味します.
【実行結果】
$ php score1.php 70 OK
$ php score1.php 50 $
【演習2】
例2の入力が 60 点未満の場合は「Failed!」と表示されるプログラムを作成せよ.
5
if 文の構文 (その2)
if ( 条件式 ) {
処理 A ;
}else{
処理 B ;
}
【解説】『条件式』が
• 成り立つ:
「処理 A」を実行.
• 成り立たない:
「処理 B」を実行.
例3 score2.php 引数として数値を入力し,60 以上ならば“ OK! ”,60 未満ならば“ Failed! ”
と表示するプログラム.
リスト 5: score2.php
1 <?php
2
i f ( $ a r g v [ 1 ] >= 6 0 ) {
3
p r i n t ’OK ’ ;
4
} else {
5
print ’ Failed ’ ;
6
}
7 ?>
【実行結果】
$ php score2.php 70 OK
$ php score2.php 50 Failed
$
【演習3】 引数として入力された整数が,奇数ならば「odd」,偶数ならば「even」と表示するプ
ログラムを作成せよ.
6
繰り返し処理について(for 文)
5
for 文の構文
for ( 初期設定 ; 条件式 ; 設定変更 ) {
繰り返し処理 ;
}
【解説】
1. 「初期設定」を実行.
2. 「条件式」が
・成り立つ:
「繰り返し処理」実行 ⇒「設定変更」を実行 ⇒
・成り立たない:何もしないで,for 文を終了する.
を再実行.
例4 repeat.php 画面上に,1 から 30 までの整数を表示するプログラム.ただし,各整数は
半角 4 桁で表示する.
リスト 6: repeat.php
1 <?php
2
f o r ( $x=1 ; $x <= 30 ; $x++ ) {
3
p r i n t s p r i n t f ( ”%4d” , $x ) ;
4
}
5 ?>
【解説】
• 2 行目 $x++ は「$x=$x+1」を省略した記述です.同様に,x+=y は「x=x+y」を意味します.
• 3 行目 sprintf(フォーマット [, 変数]) 関数は,フォーマットで指定した文字列を出力しま
す.
「"%4d", $x」は,変数$x を半角 4 桁右詰めで表示するフォーマットです.
【実行結果】
$ php repeat.php 1
19
2
20
3
21
4
22
5
23
6
24
7
25
8
26
9
27
10
28
11
29
12
30
13
14
15
16
17
18
$
【演習4】
例4において,7 の倍数個表示するごとに,改行を行うプログラムを作成せよ.
7
6
条件式の補足説明
論理演算子
複数の条件を組み合わせた複雑な条件は, 次の論理演算子 (&&, ||) を用いることで簡潔に記述でき
ます.
論理演算子を用いた表記
条件全体の真偽
条件 A && 条件 B
条件 A || 条件 B
条件 A,B がともに真の場合は真,それ以外は偽
条件 A,B がともに偽の場合は偽,それ以外は真
真理値表であらわすと次のようになる.
条件 A
条件 B
条件 A && 条件 B
条件 A || 条件 B
真
真
偽
偽
真
偽
真
偽
真
偽
偽
偽
偽
偽
偽
真
表:真理値表
ここで,真は条件が成り立つことを意味し,偽は不成立であることを意味します.
例えば,(||) を用いた「(5>3) || (2<1)」の条件は,右辺 (2<1) が偽であるが,左辺((5>3)が真
であるため,全体としても真となります.また,論理演算子を (&&) に変更した「(5>3) && (2<1)」
の条件では,両辺ともに真ではないため,偽と成ります.
例5 score3.c
グラム.
引数として数値を入力し,60 以上かつ100以下の場合に OK と表示するプロ
リスト 7: score3.php
1 <?php
2
i f ( ( $ a r g v [ 1 ] > 6 0 ) && ( $ a r g v [ 1 ] <= 1 0 0 ) ) {
3
p r i n t ’OK ’ ;
4
}
5 ?>
【実行結果】
$ php score3.php 70 OK
$ php score3.php 110 $
【演習5】
成せよ.
入力した値が101以上または0未満の場合に「Failed」と表示するプログラムを作
8
7
配列の利用
配列の作成
配列を作成するには次のように記述します.
$配列名 = array(’ キー 1’ => 値 1, ’ キー 2’ => 値 2, ...);
要素1つに付きキーと値をペアで「’ キー’ => 値」という形式で記述します.複数の要素を追加
する場合はカンマ (,) で区切り続けて記述します.また,キーを省略して以下のように記述すること
も出来ます.
$配列名 = array( 値 1, 値 2, ...);
省略した場合,キーには「0」,「1」,「2」,…が順番に自動割り当てされます.
例6
array.php
配列を利用するサンプルプログラム.
リスト 8: array.php
1 <?php
2
$ a r r a y 1 = a r r a y ( ’Num1 ’ => 1 0 , ’Num2 ’ => 2 0 ,
3
’ Num100 ’ => 3 0 ) ;
4
$ a r r a y 2 = a r r a y ( ”山” , ”川” , ”谷” ) ;
5
6
print r ( $array1 ) ;
7
$ a r r a y 1 [ ’Num2 ’ ] = ” 15 ” ;
8
9
foreach ( $ a r r a y 1 as $ v a l u e ){
10
print 2 ∗ $value . ” ” ;
11
}
12
p r i n t $ a r r a y 1 [ ’ Num100 ’ ] . ” \n” ;
13
14
print r ( $array2 ) ;
15
$ a r r a y 2 [ 2 ] = ”星” ;
16
17
foreach ( $ a r r a y 2 as $ v a l u e ){
18
print $value . ” ” ;
19
}
20
p r i n t $ a r r a y 2 [ 1 ] . ” \n” ;
21 ?>
9
【解説】
• 2,3 行目 1行が長くなる場合,文字列や変数名の途中以外ならば,どこで改行しても動作に
問題ありません.
• 6, 14 行目 print_r( ) 関数は,指定した変数に関する情報を解りやすく出力します.
• 7, 15 行目 「$配列名 [’ キー’]=値;」と記述することで,配列の要素の値を変更できます.
• 9-11, 17-19 行目 foreach( ) 文は,指定した配列に含まれる各要素の値を,as で指定した
キーと変数に順に取り出し,指定した処理を実行します.
foreach ( $配列名 as $キー名=>$変数名) {
繰り返し処理 ;
}
※ キーの情報が不要な場合は「$キー名=>$」の部分を省略可能です.
【実行結果】
$ php array.php Array
(
[Num1] => 10
[Num2] => 20
[Num100] => 30
)
20 30 60 30
Array
(
[0] => 山
[1] => 川
[2] => 谷
)
山 川 星 川
$
10
ユーザ定義関数の定義と利用
8
8.1
関数とは
「関数」とは,引数を受け取り,何らかの処理を行い,戻り値(関数の実行結果)を返す,再利
用を前提としたプログラムのことです.PHP 言語では,既に様々な関数が用意されています.例え
ば,ファイルの読み込み/書き出し,メール送信やネットワーク処理,データベース操作などを行う
便利な関数があります.それらを活用することで高機能なプログラムを,効率的に作成可能です.
ちなみに,これまでの例題で使われていた,var_dump, sprintf, print_r も関数です.
8.2
ユーザ定義関数
ユーザーが独自に関数を作成することが出来きます.そのような関数をユーザ定義関数と言い,
次のように記述します.
function 関数名 (引数の並び){
処理 1;
処理 2;
…
return 戻り値 ;
}
※ 引数と戻り値は省略可能です.
8.2.1
戻り値のあるサブ関数
例7 wa.php キーボードから2つの整数を入力後,それら和を表示するプログラム.
リスト 9: wa.php
1 <?php
2
3
f u n c t i o n wa ( $x , $y ) {
4
r e t u r n $x+$y ;
5
}
6
7
p r i n t wa ( $ a r g v [ 1 ] , $ a r g v [ 2 ] ) ;
8 ?>
【解説】
• 2-4 行目: wa() 関数の定義.
• 6 行目:wa() 関数の使用.
11
【実行結果】
$ php wa.php 3 4 7
$
【演習7】 2つの整数を引数として,大きい方の値を戻り値とするユーザ定義関数を作成せよ.
また,そのユーザ定義関数を用いて,実行時に引数として入力された2つの整数のうち,大きい方
の値を表示するプログラムを作成せよ.
8.2.2
戻り値のないサブ関数
例8 printmax.php
2つの整数を引数として,大きい方の値を画面に表示する(戻り値の
ない)ユーザ定義関数.また,そのユーザ定義関数を用いて,キーボードから2つの整数を入力後,
それらを大きい方を表示するプログラム.
リスト 10: printmax.php
1 <?php
2
f u n c t i o n p r i n t m a x ( $x , $y ) {
3
i f ( $x > $y ) {
4
p r i n t ”max = ” . $x ;
5
} else {
6
p r i n t ”max = ” . $y ;
7
}
8
}
9
10
printmax ( $argv [ 1 ] , $argv [ 2 ] ) ;
11 ?>
【解説】
• 2-8 行目: printmax() 関数の定義.
「return 戻り値;」が省略されていることに注意.
• 10 行目:printmax() 関数の使用.
【実行結果】
$ php printmax.php 3 4 max = 4
$
【演習8】 3つの整数 year,month,day を引数として,
「year 年 month 月 day 日」と表示するユー
ザ定義関数を作成せよ.また,そのユーザ定義関数を用いて,キーボードから入力された3つの整
数 y,z,d を用いて,
「y 年 m 月 d 日」と表示するプログラムを作成せよ.
12
ウェブプログラム
9
9.1
HTML 文書の基本
HTML とは,Hyper Text Markup Language(ハイパーテキスト・マークアップランゲージ)の略
であり,タグというマーク(命令)を使って HTML 文書の構造を指定したり,文字の大きさや色を
変えるとか画像を表示することなどが出来ます.
タグは,原則として,<タグ名>と</タグ名>の2つを組として使います.例えば HTML 文書にタイ
トルを指定する場合は,<title>タイトル名</title>のように記述します.また,改行を行う<br>
タグのように,単独で使用するものもあります.
HTML 文書は head 要素と body 要素で構成されます.ヘッド要素は HTML 文書のメタ情報(タ
イトル,ページの説明,スタイル,検索語などの情報)を納めた部分です.ボディ要素は HTML 文
書の本文です.
9.2
ウェブブラウザで実行する PHP プログラム
PHP と連携したウェブサーバでは,PHP プログラムを動作させることが可能です.HTML 文書
ファイル内に,PHP プログラムを埋め込み,その PHP プログラムが HTML コードを出力すること
で,動的なウェブサイトが構築可能になります.
例9
server-info.php
HTML 文書に PHP プログラムを埋め込んだ例.
リスト 11: server-info.php
1 <html>
2
<head>
3
< t i t l e >s e r v e r −i n f o . php</ t i t l e >
4
</head>
5
<body>
6
<!−− コ メ ン ト 文
7 コ メ ン ト 文 −−>
8
9
<?php
10
f o r e a c h ( $ SERVER a s $ k e y=>$ v a l u e ) {
11
p r i n t ’ $ SERVER [ ’ . $ k e y . ’ ] = <b> ’ . $ v a l u e .
12
}
13
?>
14
</body>
15 </html>
’</b><br> ’ ;
【解説】
• 1,15 行目: HTML 文書のはじまりに「<html>」,終わりに「</html>」を記入します.
• 2,4 行目: HTML 文書のヘッダー部のはじまりに「<head>」,終わりに「</head>」を記入し
ます.
• 3 行目: HTML 文書のヘッダー部において,文書のタイトルを指定します.
13
• 5,14 行目: HTML 文書のボディー部のはじまりに「<body>」,終わりに「</body>」を記入し
ます.
• 6,7 行目: HTML 文書では,
「<!--」から「-->」の間の部分は,改行も含めて,コメント文と
して無視されます.
• 9-13 行目: HTML 文書埋め込んだ PHP プログラムの部分です.
• 10 行目: $_SERVER 配列には,サーバに関する環境情報が格納されています.foreach 文によ
り,$_SERVER 配列の要素情報を逐次取り出します.
• 11 行目: foreach 文により取り出した$_SERVER 配列の要素情報を,HTML タグと付加して書
き出します.<b>∼</b>は太字にするタグです.
【実行結果】
図 2: ウェブブラウザから server-info.php を実行した例.
【演習9】 例9の「server-info.php」を変更し,下図のように$_SERVER 配列の要素情報を表形式
で表示するように変更せよ.
14
9.3
HTML フォーム
HTML には,ウェブ接続元(ユーザ)からサーバへ情報を送信する仕組みとして,フォームが用
意されています.
例10
forms.php
HTML フォームの例.
リスト 12: forms.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<html>
<body>
<form method=” p o s t ” a c t i o n=” f o r m s . php ”>
S t u d e n t ID : <i n p u t t y p e=” t e x t ” name=” S t u d e n t I D ” />
<br><br>
F a c u l t y / S c h o o l : <br>
<i n p u t t y p e=” r a d i o ” name=”FS” v a l u e=” A r t s and L e t t e r s ”
c h e c k e d=” c h e c k e d ” /> A r t s and L e t t e r s
<i n p u t t y p e=” r a d i o ” name=”FS” v a l u e=” S c i e n c e ” /> S c i e n c e
<i n p u t t y p e=” r a d i o ” name=”FS” v a l u e=” M e d i c i n e ” /> M e d i c i n e
<i n p u t t y p e=” r a d i o ” name=”FS” v a l u e=” E n g i n e e r i n g ” /> E n g i n e e r i n g
<br><br>
Favoreit animals :
<i n p u t t y p e=” c h e c k b o x ” name=” F e v o r i t e D o g ” v a l u e=”YES” /> Dog
<i n p u t t y p e=” c h e c k b o x ” name=” F e v o r i t e C a t ” v a l u e=”YES” /> Cat
<i n p u t t y p e=” c h e c k b o x ” name=” F e v o r i t e B i r d ” v a l u e=”YES” /> B i r d
<br><br>
Best f a v o r e i t Sport :
< s e l e c t name=” B e s t S p o r t ”>
<o p t i o n >S o c c e r </o p t i o n >
<o p t i o n >B a s e b a l l </o p t i o n >
<o p t i o n >B a s k e t b a l l </o p t i o n >
<o p t i o n >T e n n i s </o p t i o n >
</ s e l e c t ><br><br>
<t e x t a r e a name=”Comment” rows=”4 ” c o l s=” 40 ”>P l e a s e f e e l f r e e
t o w r i t e h e r e .</ t e x t a r e a >
<br><br>
<i n p u t t y p e=” s u b m i t ” v a l u e=” Submit ” />
<i n p u t t y p e=” r e s e t ” v a l u e=” R e s e t ” />
</form>
<?php
p r i n t ’< t a b l e b o r d e r =”1”> ’ ;
f o r e a c h ( $ POST a s $ k e y=>$ v a l u e ) {
p r i n t ’<t r > ’ ;
p r i n t ’<td> ’ . $ k e y . ’</td><td> ’ . $ v a l u e . ’</td> ’ ;
p r i n t ’</ t r > ’ ;
}
p r i n t ’</ t a b l e > ’ ;
?>
</body>
</html>
15
【解説】
• 4-31 行目:form 部分.以下の様な書式で記述します.
<form action="データの送り先ファイル名" method="データの送り方">
フォーム部品 1
フォーム部品 2
・
・
・
<input type="submit" value="送信ボタンの表示文字" />
</form>
– フォーム部品には,
「テキストボックス」,
「ラジオボタン」,
「チェックボックス」,
「選択リ
ストボックス」,
「テキストエリア」等があり,form タグ内に設置します.各フォーム部
品の使い方の詳細は,ネット検索などして各自調べて下さい.
– form タグの「action」属性でフォームで入力されたデータの送り先を指定します.ここ
では,同ファイル(forms.php)を指定しています.
– form タグの「method」属性でデータの送り方(get または post など)を指定します.こ
こでは,
「post」を指定しています.
「get」は,フォームデータを URL に「?x=1&y=2&z=3…」のように付加して送ります.
「post」は,フォームデータを URL とは別に送ります.
method
get
post
メリット
デメリット
フォームデータ付きのページを,URL
で指定できる.また,フォームデータ付
きのページをブックマーク登録できる.
フォームデータが URL に付加されない
ため,フォームデータ漏洩のリスクを減
らすことができる.
URL に,送られるフォームデータの情
報が付加されるため,第三者にフォーム
データが知られるリスクが高まる.
フォームデータ付きのページをブック
マーク登録しても,フォームデータは
消えてしまう.
• 33-41 行目:PHP プログラム部分.受信したフォームデータを表の形式で表示します.
なお,
「post」methd で受信したフォームデータは$_POST 配列に,また,
「get」methd で受信
したフォームデータは$_GET 配列に格納されています.
16
【実行結果】
【演習10】
例 10 の forms.php のフォームを,
「get」method を用いたものに変更せよ.
17
例11 prime-list.html & search prime.php
り先が異なるファイルの場合).
素数判定プログラム(フォームデータの送
リスト 13: prime-list.html
1
2
3
4
5
6
7
8
9
10
11
<html>
<body>
<form a c t i o n=” s e a r c h p r i m e . php ” method=” p o s t ”>
Scope o f s e a r c h : 2 −
<i n p u t t y p e=” t e x t ” name=”num” s i z e=”5” v a l u e=” 100 ” />
<i n p u t t y p e=” s u b m i t ” v a l u e=” F i n d P r i m e s ” />
</form>
</body>
</html>
リスト 14: search prime.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html>
<body>
<?php
// 入 力 値 判 定
i f ( i s n u m e r i c ( $ POST [ ’ num ’ ] ) && $ POST [ ”num”]>=2){
// 適 切 な 場 合
p r i n t ” Prime L i s t i n 2 − ” . $ POST [ ”num” ] . ” : <b r /> 2” ;
f o r ( $ i = 3 ; $ i <= $ POST [ ”num” ] ; $ i += 2 ) {
$k = 0 ; // 素 数 判 定 用 フ ラ グ
f o r ( $ j = 3 ; $ j <= s q r t ( $ i ) ; $ j += 2 ) {
i f ( $ i % $ j == 0 ) {
$k = 1 ;
break ; // f o r ル ー プ を 終 了
}
}
i f ( $k==0){
print ’ , ’ . $i ;
}
}
} else {
// 不 適 切 な 場 合
p r i n t r ( $ POST ) ;
echo ’<b r /> e r r o r !< b r /> ’ ;
}
?>
</body>
</html>
【解説】
• 「prime-list.html」の 4 行目:フォームデータの送り先を指定する form タグの「action」属性で
18
は,同ファイルだけではなく,異なるファイルも指定できます.ここでは,
(search prime.php)
を指定しています.
• 「search prime.php」の 7 行目:is_numeric() 関数は,引数が数値形式であるかを判定しま
す.ここでは,フォームデータ$_POST[’num’] が,2 以上の数値であるかを判定します.
• 「search prime.php」の 10 行目:変数$i を,素数探索範囲である 3 から$_POST[’num’] まで
の奇数に順次変更します.
• 「search prime.php」の 11-20 行目:素数探索処理.
√
– 12-17 行目:$i の約数候補(3 から $i までの奇数)で,$i を割り算して,割り切れる(剰
余が 0)かどうかで,$i の素数判定を行います.全ての素数候補で割り切れない(剰余が
0 にならない)場合,$i は素数です.
– 18-20 行目:$i が素数の場合,$i の値を出力します.
• 「search prime.php」の 24-26 行目:フォームデータ$_POST[’num’] が,2 以上の数値で無かっ
た場合,エラーメッセージを出力します.
【実行結果】
19
PHP 言語プログラミングの自学自習に役立ちそうなサイト
• PHP マニュアル, The PHP Group,
http://www.php.net//manual/ja/index.php
• 初心者 PHP 入門,
http://www.standpower.com/
• PHP 基礎講座(全 27 回), PHP プロ!,
http://www.phppro.jp/school/phpschool/
• PHP 入門(全 14 項目), ポンクソフト,
http://ponk.jp/php/basic/
20
© Copyright 2026 Paperzz