リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

4-1. PHPの式と制御の流れ①式と演算子

4章やってきました!
4章では、3章PHPの基礎を下地に、実際のPHPプログラミングの働きとプログラムの流れを制御する方法について基礎を勉強していきます。

1-1. 式


式は値や変数、演算子、関数の組み合わせで結果として値を返します。

y=3(abs(2x)+4)
これは数学の授業でよく見かけた式ですが、これをPHPでは算術演算子を使って次のように書きます。
$y=3*(abs(2*$x);4);

返される値は、数値やストリング値、Boolean値(ブーリアン値)などです。

1-2. Boolean値(ブーリアン値)


Boolean値は真(TRUE)と偽(FALSE)の2種類の値を扱います。なので結果がTRUEやFALSEで表される論理演算子を組み合わせます。

簡単な式例を書いてみます。


<?php

echo "a:[".(20>9)."]"; //結果はTRUE

echo "b:[".(5==6)."]"; //結果はFALSE

echo "c:[".(1==0)."]"; //結果はFALSE

echo "d:[".(1==1)."]"; //結果はTRUE

?>

出力してみると、
f:id:taro-blog2323:20160718122406p:plain
TRUEの場合は値1、FALSEの場合nullと定義されているので上記のように表示されます。
プログラミング言語によりTRUE、FALSEの定義が-1とかのものもあるとのこと。

1-3. 2つの式の形式


式の単純な形式は2つあります。1つは、リテラル。もう1つは変数。
リテラルは、文字通りとか、そのまんまという意味らしく、数値の11やストリングの"HelloWorld"などそれ自体が評価の結果になるものを言います。
変数は、式は評価の結果代入された値になる場合のことをいいます。


<?php

$myname = "Brian";

$myage = 37;

echo "a: " . 73 . ; // 数値リテラル

echo "b: " . "Hello" . ; // ストリングリテラル

echo "c: " . FALSE . ; // 定数リテラル

echo "d: " . $myname" . ; // ストリング変数リテラル

echo "e: " . $myage " . ; // 数値変数リテラル

?>

結果はこう。
f:id:taro-blog2323:20160718124804p:plain

なるほど。。。こういう式と論理演算子等々を組み合わせていくとかっこいいPHPの式ができるのか。。。はやくかっこいい式つくれるようになりたい…

2-1. 演算子の優先順位


基本式の処理は左から右に進みますが、演算子の優先順位が影響する場合があります。

PHP演算子の優先順位(高い順)

演算子 タイプ
() かっこ
++ -- インクリメント/デクリメント
! 論理
/*% 算術
+ - . 算術とストリング
<< >> ビット
< <= > >= <> 比較
== != === !== 比較
& ビット
^ ビット
ビット
&& 論理
|| 論理
? : 三項
= += -= /= %= &= != ^= <<= >>= 代入
and 論理
xor 論理
or 論理

1+2*3-4*5
だと先に*の計算をします。
※加算、減算、乗算、除算の優先順位は算数と同じで、乗算、除算>加算、減算です。

PHPでは()でくくられた式を先に評価し値を出します。
1+(6)-(20)
だと、結果は-13で出力されます。

2-2.右から左パターンの結合性


基本式の処理は左から右に進みますが、右から左に進む処理を必要とするものがあります。
この処理の向きは演算子の結合性と呼ばれます。

◎右から左への結合性を持つ演算子

演算子 説明
new 新しいオブジェクトの作成
! 論理否定
~ ビット否定
++ -- インクリメントとデクリメント
+ - 単項プラスと単項マイナス
(int) 整数(integer)としての値を取得する
(double) 浮動小数点としての値を取得する
(string) 文字列型を表す
(array) 配列を作成する
(object) オブジェクトを作成する
@ エラーレポートの抑制
= 代入


<?php

$level = $score = $time = 0;

?>

ここでは3つの変数すべてが0に設定されます。まず右の式が評価されて、次いで右から左に受け流す感じで処理が進みます。






なんか、大したことじゃないような気がするけどリスで大げさに書かれると難しく感じます…
最後にまとめという項目を作りたいのですが、そこまでまだ技量がなく。あとで振り返ったときに作ってみよう...

気分転換に全く関係ない写真をはっつける。ねこに癒されたい。もふもふしたい(;´Д`


次回は関係演算子についてです。
いじょー