比較演算子 の 結果 は全て 論 理 型
$a = true;
print $a . "¥n";
var_dump($a);
$a = false;
print $a . "¥n";
var_dump($a);
PHPの基本 変数と型
オブジェクト型(object)
クラスのインスタンス(実態)
クラスオブジェクトの設計図クラスで定 義 したメ ソ ッドを使える
メソッドクラスに紐付いた関数メンバ変数を持てる
メンバ変数 オブジェクトの中に格納されている変数# 36
PHPの基本 変数と型
リソース型(resource)
外部リソース(情報資源)への参照を保持する 特殊 な変数
他の型からの変換は不可能
ファイル/ディレクトリ データベース(接続, ステートメント, etc…
) グラフィック(GD, ImageMagik, etc…
)$fp = fopen("test.txt", "r");
var_dump($fp);
fclose($fp);
PHPの基本 変数と型
ヌル型(Null)
値が何も無いことを示す特殊な変数
以 下 の場合に N ullと 見 なされる
「Null」が代入されている場合(下記サンプル参照) 値が何も無い場合 変数が存在しない場合 unset()関数で変数が破棄されている場合$var = null;
var_dump($var);
# 38
PHPの基本 演算子
演算子
演算子の種類
代数演算子 代入演算子 比較演算子 加算子/減算子 文字列演算子PHPの基本 演算子
算術演算子
数値を足したり引いたりするための演算子 優先順位も含め算数と全く同じ例 説明 詳細
-$a 負にする $aの符号を反転したもの
$a + $b 加算 $aと$bの和
$a - $b 減算 $aと$bの差
$a * $b 乗算 $aおよび$bの積
$a / $b 除算 $aおよび$bの商
$a % $b 乗余 $aを$bで割った余り
# 40
PHPの基本 演算子
算術演算子
演習:変数に値を代入し、計算してみましょう 値、演算子を変更して演算結果を確認しましょう$a = 1;
$b = 2;
print ($a - $b);
PHPの基本 演算子
代入演算子 変数に値若しくは演算結果を代入する演算子例 説明
$a = 3; $aに3を代入
$a += 5; $aに5を加算
$b="Hello"; $bに文字列を代入
$a = 10;
$a += 2;
print ($a);
# 42
PHPの基本 演算子
比較演算子
2つの値を比較する演算子。演算結果はboolean。例 説明 詳細
$a == $b 等しい
$a === $b 等しい 型比較も行う
$a != $b 等しくない
$a <> $b 等しくない ($a!=$bを推奨)
$a !== $b 等しくない 型比較も行う
$a = 1;
$b = 2;
var_dump($a===$b);
PHPの基本 演算子
比較演算子(続き)
2つの値を比較する演算子。演算結果はboolean。例 説明
$a < $b より少ない
$a > $b より多い
$a <= $b より少ないか等しい
$a >= $b より多いか等しい
$a = 1;
$b = 1;
var_dump($a<=$b);
# 44
PHPの基本 演算子
加算子・減算子
値を+1または-1する演算子。例 説明 詳細
++$a 前置加
算子
参照前に$aを+1
$a++ 後置加
算子
参照後に$aを+1
--$a 前置減
算子
参照前に$aを-1
$a-- 後置減
算子
参照後に$aを-1
<?php
$a = $b = 1;
print ++$a;
print "¥n";
print $a;
print "¥n";
print $b++;
print "¥n";
print $b;
print "¥n";
?>
PHPの基本 演算子
文字列演算子
文字列同士を結合する演算子。例 説明 詳細
$b = $a . ",There!"; 結合演算子 「.」 によって文字列 を結合する
$b .= "There!"; 結合代入演算子 左辺の値に文字列を結
合する
$a = "Hello";
$b = $a . ",There!";
print $b;
# 46
PHPの基本 演算子
論理演算子
複数の条件式を論理的に結合する演算子です例 説明 詳細
&& 論理積 双方がTRUEの場合にTRUEを返す
|| ( or ) 論理和 いずれかがTRUEの場合にTRUEを返す
xor 排他的論理和 いずれかがTRUEでかつ双方ともTRUE でない場合にTRUEを返す
! 否定 式がFALSEである場合にTRUEを返す
$a = true;
$b = false;
var_dump($a xor $b);
PHPの基本 定数
define("HOSTNAME", "ZEND1");
define("HOSTNAME", "ZEND2");
print (HOSTNAME);
定数
不変の値を保持する 再定義はできない 使える文字は英数字、アンダースコアのみ スコープ(後述)規則がない 配列は格納できない# 48
PHPの基本 定数
マジック定数
自動的に定義される定数 使われ方によって値は変化する名前 説明
__LINE__ 実行中の行番号
__FILE__ 実行中ファイルのフルパスとファイル名
__FUNCTION__ 関数名
__CLASS__ クラス名
__METHOD__ クラスのメソッド名
PHPの基本
制御構造と関数
制御構造とは …
プログラムの 流 れを 制御 するもの
制御構造の種類
順次構造
上から順に処理を行う構造選択構造
式の結果に応じて処理を分岐する構造反復構造
式の結果に応じて処理を繰り返す構造# 50
PHPの基本
制御構造と関数
if
条件に一致した際(TRUEの場合)、処理を実行します$a = 1;
if( $a == 1 ){
print '$aには1が代入されています';
}
if ( 条件式 ) { 処理
}
PHPの基本
制御構造と関数
else
条件に一致しない場合(FALSE)、処理2を実行し ます$a = 1;
if( $a >= 10 ){
print '$aは10以上です';
}else{
print '$aは9以下です';
}
if ( 条件式 ) { 処理1
} else { 処理2 }
# 52
PHPの基本
制御構造と関数
elseif
条件式1に一致せず(FALSE)、且つ条件式2に一 致した場合(TRUE)、処理2を実行します$a = false;
$b = true;
if($a){
print "Hello";
}elseif($b){
print "bye";
}
if ( 条件式1) { 処理1
} elseif( 条件式2){
処理2 }
PHPの基本
制御構造と関数
while
条件式の結果が(TRUE)のとき、処理を繰り返します$i = 1;
while( $i <= 10 ){
echo $i++ . "¥n";
}
while( 条件式 ) { 処理
}
# 54
PHPの基本
制御構造と関数
do … while
条件式の結果が真(TRUE)のとき、処理を繰り返し ます 処理を実行した後で条件式を評価します$i = 0;
do{
print ++$i . "¥n";
}
while( $i <= 10 );
do{
処理
while( 条件式 )
PHPの基本
制御構造と関数
for
開始時の処理を無条件で実行します 条件式の結果が(true)の時、処理を実行します 実行後の処理を行い、条件式の結果が(false)になるまでループ処理を継続します
for( $i=1; $i<=10; $i++ ){
echo $i . "¥n";
}
for( 開始時の処理; 条件式; 実行後の処理 ){
処理 }
# 56
PHPの基本
制御構造と関数
foreach
配列要素に対する反復構造 配列の要素が$value(任意の名称)に代入されてい きます 二種類の構文があります$a = array("php", "perl", "java");
foreach($a as $val){
print $val . "¥n";
}
foreach ( 配列 as $value){
処理 }
PHPの基本
制御構造と関数
foreach (構文)
連想配列をループ処理する際、非常に有効です 要素のキーが $key に代入されます$os = array(
"opensource" => "linux", "ms" => "windows",
"apple" => "osx"
);
foreach( $os as $key => $val ){
print $key. "::" .$val."¥n";
}
foreach ( 配列 as $key => $value){
処理 }
# 58
PHPの基本
制御構造と関数
break
その時点で反復構造(while, do-while, for, foreach ) とswitch(後述)構造を抜けますfor($i = 1; $i < 50; $i++){
if($i == 25){
break;
}
print $i . "¥n";
}
PHPの基本
制御構造と関数
continue
反復構造の残りの処理をスキップし、次の処理を 実行します$i = 0;
while($i < 10){
$i++;
if($i == 5){
continue;
}
print "$i" . "¥n";
}
# 60
PHPの基本
制御構造と関数
switch
一つの変数を複数の値と比較し、それぞれ異なる 処理を行わせる制御構造$a = 1;
switch( $a ){
case 0:
print 'very good';
break;
case 1:
print 'good';
break;
case 2:
print 'not bad';
break;
default:
print '...';
} switch ( 条件式 ) {
case a : 処理 a break;
case b : 処理 b break;
default : 処理
}
PHPの基本
制御構造と関数
return
スクリプトの実行を中止しますprint "a¥n";
print "b¥n";
return;
print "c¥n";
# 62
PHPの基本
制御構造と関数
include・require
PHPスクリプトを読み込みます// foo.phpが無いとwarningになります include "foo.php";
// bar.phpが無いとFATAL ERRORになります require "bar.php";
PHPの基本
制御構造と関数
include_once・require_once
1度だけPHPスクリプトを読み込みます 2度目に実行しても再度読み込みは行いません// foo.phpが無いとwarningになります Include_once "foo.php";
// bar.phpが無いとFATAL ERRORになります require_once "bar.php";
# 64
PHPの基本
制御構造と関数
関数とは …
処理を一まとめにしたもの 2種類 の 関 数が存在する
ビルトイン関数PHPにデフォルトで組み込まれている定義 済みの関数
ユーザ定義関数ユーザ自身が定義する関数
PHPの基本
制御構造と関数
ビルトイン関数
DB接続や文字列操作など多種にわたる関数が存在 例 文字列操作 strcmp, strstr, strcat, strlen, etc…
DB操作 pg_connect, mysql_query, db2_prepare, etc…
1000以上存在しますhttp://php.benscom.com/manual/ja/indexes.php#in dex.functions
# 66
PHPの基本
制御構造と関数
ユーザ定義関数 「function」命令を使用して定義を行う 関数名の命名規則は変数と同じ 引数とは 関数に渡す値 ⇒ 処理を行ってほしい対象 戻り値とは 関数で処理を行った結果を自動的に返したものfunction 関数名 (引数) {
処理(戻り値)
}
PHPの基本
制御構造と関数
ユーザ定義関数
まずは簡単な関数を定義してみましょう 定義した関数を実行してみましょうfunction foo(){
print 'こんにちは';
}
foo();
# 68
PHPの基本
制御構造と関数
ユーザ定義関数
引数と戻り値のある関数を定義してみましょう 定義した関数を実行してみましょうfunction sale($teika){
$urine = $teika * 0.7;
return $urine;
}
print "3割引!!¥t". sale(1500) . "円";
PHPの基本
制御構造と関数
スコープ( 変数の有効範囲 )
関数内にある変数 ローカル変数 関数外にある変数 グローバル変数 2種類の変数は全く別の世界に存在する$a = 1;
function hoge(){
$a;
print ($a + 1);
}
hoge();
ローカル変数の 有効なエリア
グローバル変数 の有効なエリア
# 70
PHPの基本
制御構造と関数
スコープ( 変数の有効範囲 )
グローバル宣言することで、ローカル変数をグ ローバル変数として扱うことが可能$a = 1;
function hoge(){
global $a;
print ($a + 1);
}
hoge();
データのやりとり
サーバ-クライアント間のデータのやり取りの手
# 72
データのやりとり
入力フォーム
WebアプリケーションではHTMLのフォームによ るデータのやりとりが非常に多く見られますクライアント側 サーバ側
apache
PHP
① ブラウザの入力フォームに入力された値はHTTPプロトコルによってサーバに送信される。
② サーバ側では値をPHPにより受け取り、ロジカルな処理を行う。
③ PHPスクリプトの実行結果がクライアントに送られ、ユーザのブラウザ表示に反映される。
①
③
②
データのやりとり
<html>
<body>
<form action="post.php" method="post">
<table border = "1">
<tr>
<td>名前</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="送信"></td>
</tr>
</form>
</table>
</body>
</html>
実際にプログラムを作ってみましょう
まず簡単な入力フォームを作成します( .htmlで保存 )# 74
データのやりとり
データを受け取り、処理を行う htmlの <form>タグのmethod属性を「post」で指定した場合、PHPではスーパーグローバル変数(詳細は後述) $_POST で受け 取ることが出来る
フォームで送信した値は<input>タグのname属性で指定した名 称をキーとした$_POSTの連想配列に格納される PHPスクリプトを作成し、実際にアウトプットを表示してみま しょう<?php
$name = $_POST['name'];
print "名前を受け取りました" . "<br />" . "$name";
?>
データのやりとり
スーパーグローバル変数
PHPスクリプトにアクセスした時点で自動的に 定義される変数 関数内であってもアクセス可能 値は連想配列として格納される $_POSTもスーパーグローバル変数のひとつ# 76