PHP 基本的な流れ(演算子)
西広島ドットコムへようこそ!
|トップ|新着情報|検索|サイトマップ|
 パソコン
 ネット

現在のところ、最も内容が充実しています。

 プログラム
 地域
 学習指導
 哲学
 創作
 批評
 トレード
 リンク集

form によるデータ入力

 printfでは表示しかできない。 いろいろ入力するとなると手軽なのは HTML 言語の form タグだ。

 次のプログラム11.php を作成し、apache からアクセスできる場所に置こう。

 <?php
 $s = $_GET[str];
 
 print <<<EOF
 <form action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="get">
 文字列を入力: <input type="text" name="str" size="30" value="受信文字列: $s">
 <input type="submit" value="送信">
 </form>
 EOF;
 ?>

このプログラムはテキスト入力欄に受信文字列: と表示する。 そこを Bye. などと書き代えて「送信」ボタンを押してみよう。 今度は 受信文字列: Bye. と表示されるはずである。

 つまり、form から get 形式で送られた文字列を受け取った PHP プログラムが、 $s という変数にそれをセットし、print 文の中で使用していることがわかる。 print <<<EOFというのは行頭が EOF; である 1 行に出会うまで、 全ての文字列を標準出力に出すという書き方である(ヒアドキュメント)。 この時、$ で始まる変数は展開されて中身が取り出される。

演算子

 以下、演算子を説明する。

算術演算子

 プログラム内で四則計算するには、次の算術演算子を使用する。

記号結果として返る値
+左項に右項を足したもの
-左項から右項を引いたもの
*左項に右項をかけたもの
/左項を右項でわったもの
%左項を右項でわったときの余り

 次のプログラム12.phpを作成し、算術演算子の使い方を確認してみよう。

 <?php
  $a = 64;
  $b = 12;
  printf("$a = %d, $b=%d<br>\n", $a, $b);
  printf("和:%d, 差:%d, 積:%d, 商:%d, 余り:%d\n", $a+$b, $a-$b, $a*$b, $a/$b, $a%$b);
 ?>

結果が次のようになればよい。 2 つのオペランドが整数の場合(または整数に変換された文字列の場合)であっても、割算演算子 / は実際は float 値を返している。

 a = 64, b=12
 和:76, 差:52, 積:768, 商:5, 余り:4

単項演算子

 1つの項のみに関与する演算子として次のものがある。

記号結果として返る値
-右項の符号を逆にする
++左項または右項に1を加える(インクリメント)
--左項または右項から1を引く(デクリメント)

 ここで注意したいのは、インクリメントあるいはデクリメントのタイミングである。

 $a = 10;
 $b = ++$a; /* $aをインクリメントした後、$bに代入 */
 $c = $a++; /* $bに代入した後、$aをインクリメント */

 上の結果は、$b=11, $c=11となる。 このように$a++++$aは微妙に違うことを覚えておきたい。

代入演算子

 代入演算子として次のものがある。

記号結果として返る値
=右項を左項に代入する
+=左項に右項を足したものを左項に代入する
-=左項から右項を引いたものを左項に代入する
*=左項に右項をかけたものを左項に代入する
/=左項を右項で割ったものを左項に代入する
%=左項を右項で割った余りを左項に代入する
.=左項の文字列に右項の文字列を追加したものを左項に代入する

 $a = $a + $bを短く書いたものが$a += $bである。

 $a = $b = $cとすると、$a, $bともに $c の値が代入される。

比較演算子

 0なら偽(FALSE)、それ以外なら真(TRUE)となります。 次の比較演算子は正しければ1を、正しくなければ0を返します。

記号結果として返る値
>左項が右項より大きい
<左項が右項より小さい
>=左項が右項以上
<=左項が右項以下
==左項が右項と等しい
!=左項が右項と等しくない
<>左項が右項と等しくない
===左項が右項と等しく、同じ型である(PHP 4)
!==左項が右項と等しくないか、同じ型でない(PHP 4)

論理演算子

 あらゆる論理演算は、「かつ」「または」「でない」の組み合わせで表現できるとされている。 次の論理演算子も正しければ1、正しくなければ0を返す。

記号結果として返る値
and左項かつ右項(AND)
or左項または右項(OR)
xor左項または右項のどちらかのみ(XOR)
&&左項かつ右項(AND)
||左項または右項(OR)
!右項でない(NOT)

 and と && は優先順位が異なっているので注意。

三項演算子

 次の論理演算子は例外処理などを簡潔に記述できるので、時々使われる。

記号結果として返る値
$a? $b: $c$aが真なら$b、偽なら$c

 次のプログラムは何をしているのか。 わかったら、これを使い、$xの絶対値を計算するプログラムを書いてみよう。

 $x = ($a > $b)? $a: $b;

文字列演算子

記号結果として返る値
.左項の文字列の末尾に右項の文字列を追加したもの

 例えば "こんにちは、" . "赤ちゃん。" のように使う。

演算子の優先順位

 これまで述べてきた演算子は、+より*が先に計算されるなど、 大体数学と同じ優先順位をもっている。 しかし、厳密な順序が問題になる場合もあるので、 ここに優先順位一覧表を挙げておく。 上のものほど優先度が高く、下のものほど優先度が低い (スペースの都合により取り上げなかった演算子も含む)。

種類演算子
[]
式・単項演算子! ++ -- () @
乗除* / %
加減・結合+ - .
比較< <= > >=
等価== != === !==
論理AND&&
論理OR||
三項演算子? :
代入演算子= += -= *= /= %=
print文print
論理ANDand
論理XORxor
論理ORor
カンマ,

 ()演算子は全てに優先されるので、優先順位が不明の場合、 かっこをつけて使うのがよい。

 $x = (($a > 0) || ($b < 0))? ($a + $b): ($a - $b);
|サイトポリシー|プロフィール|地図|お問合せ|
2007- (C) Nishihiroshima.com RSS