#8 PHPのいろんな演算子
文字列演算子(文字列を連結する)
<?php
$name = '大橋太郎';
$measage = 'こんにちは!';
echo $name . $measage . '
';
echo $name . 'さん' . $measage . '
';
$aisatsu = ''; /* 最初に中身がからっぽの変数を作っておきます */
$aisatsu .= 'おはようございます'. $name . '、';
$aisatsu .= '寒いですね'. $name . '。';
echo $aisatsu
?>
文字列や変数は「.」で繋いで連結させます。+ :結合演算子
.= :結合代入演算子
+=、-=、*= のような結合代入演算子とかもあります
$aisatsu .='おはようございます' は
$aisatsu = $aisatsu . 'おはようございます' を略したものです。

代数演算子(簡単な四則演算をする)
<?php
$a = 2;
$b = 5;
echo ($b - 3).'
'; /* 5-3 */
echo ($a * 3).'
'; /* 2*3 */
echo ($a * $b).'
'; /* 2*5 */
echo ($a / $b).'
'; /* 2/5 */
echo ($a % $b).'
'; /* 2%5 */
echo ($a ** $b).'
'; /* 2**5 */
?>
例 | 名前 | 結果 |
+$a | 同一 | $a を、必要に応じて int あるいは float に変換する |
-$a | 負にする | $a の逆 |
$a + $b | 加算 | $a および $b の合計 |
$a - $b | 減算 | $a および $b の積 |
$a * $b | 乗算 | $a および $b の積 |
$a / $b | 除算 | $a および $b の商 |
$a % $b | 剰余 | $a を $b で割った余り |
$a ** $b | 累乗 | $a の $b 乗。(PHP 5.6 から導入) |

代入演算子(文字や数字を代入する)
<?php
$a = 3;
echo $a.'
';
$b = 5;
$c = 8;
$b += $c; /* $b+$cの値を、$bに代入 */
echo $b;
?>
$a = 3 とは $a は 3 と等しい…ではなく、$a という箱の中に数字の 3 を代入するということです。

加算子/減算子
<?php
$i = 5; /* 5に設定した */
echo ++$i.'
'; /* 6 */
echo '-------';
$i = 10; /* 10に設定した */
echo $i++.'
'; /* 10 */
echo $i.'
'; /* 11 */
echo '-------';
$i = 20; /* 20に設定した */
echo --$i.'
'; /* 19 */
echo '-------';
$i = 50; /* 50に設定した */
echo $i--.'
'; /* 50 */
echo $i.'
'; /* 49 */
?>
変数の中身が数値の場合は、加算子$i++と代数演算子$i = $i + 1で動作は同じです。++(インクリメント)
--(デクリメント)
例 | 名前 | 結果 |
++$i | 前置加算子 | $i に 1 を加え、$i を返します |
$i++ | 後置加算子 | $i を返し、$i に1を加えます |
--$i | 前置減算子 | $i から 1 を引き、$i を返します。 |
$i-- | 後置減算子 | $i を返し、$i から 1 を引きます。 |

論理演算子
<?php
$math = 48;
$english = 87;
if ($math > 50 || $english > 60){ /* 数学は50点以上、英語は60点以上、どちらかが真なら。という式 */
print "合格です";
}else{
print "不合格です";
}
?>

例 | 名前 | 結果 |
$a and $b | 論理積 | $a および $b が共に TRUE の場合に TRUE |
$a && $b | 論理積 | $a および $b が共に TRUE の場合に TRUE |
$a or $b | 論理和 | $a または $b のどちらかが TRUE の場合に TRUE |
$a || $b | 論理和 | $a または $b のどちらかが TRUE の場合に TRUE |
$a xor $b | 排他的論理和 | $a または $b のどちらかが TRUE でかつ両方とも TRUE でない場合に TRUE |
! $a | 否定 | $a が TRUE でない場合 TRUE |
比較演算子(値を比較し、結果「true, false」を返す)
<?php
$a = '1'; /* string型(文字列) */
$b = 1; /* integer型(整数)*/
/* 正しかったら「真」、間違っていたら「偽」にしてね。のif文(後述)*/
if($a == $b){
echo '真';
}else{
echo '偽';
}
if($a === $b){
echo '真';
}else{
echo '偽';
}
?>

= | 右辺の値を左辺に代入 | |
== | 等しい(データ型を無視) | 等しいとtrue |
=== | 等しい(データ型も含む) | 等しいとtrue |
!= | 等しくない | 等しくないとtrue(<>も同じ) |
!== | 等しくない(データ型も含む) | 等しくないとtrue |
$a < $b | $aが$bより小さい | 小さいtrue |
$a <= $b | $aが$bより小さいか等しい | 小さいか等しいとtrue |
データ型について
データ型とはデータの性質(種類)のことです。文字型 | 'Hellow!' '1' | 【string ストリング】文字として認識される文字列のこと |
整数型 | 1, 100 | 【integer インテジャー】足し算引き算できる数字 |
不動小数点数型 | 1.4142, -0.08, 120.5 | 【float フロート】どこかに小数点が入るような数字 |
論理型 | TRUE FALSE | 【boolean ブーリアン】正しいか、誤っているか |
配列型 | array('りんご', 'apple') | 【array アレイ】 |
オブジェクト型 | $obj = new someclass(); | 【object オブジェクト】 |
ヌル型 | NULL | 【null ヌル】無とか空。ゼロではない |
三項演算子(値を比較し、結果「true, false」の時の式を返す)
<?php
$lang = 'English';
$meaage = $lang == 'Japanese' ? 'こんにちは' : 'Hello';
echo $message;
?>
条件式 ? 真の式 : 偽の式$lang == 'Japanese' であれば、'こんにちは' そうでないなら 'Hello' を表示させるという式です。
その結果を変数「$message」に代入してね。という式です。
if文のような機能ですが、あくまで式(値)を呼び出すだけです。ifのように条件式はかけませんが、シンプルに式を書けます。

#9 データベースを作る(SQL)
データベースとはわかりやすく言えば「エクセルのおばけ」です。エクセルでも簡単な計算はできますが、
データベースはリレーショナルデータベースマネジメントシステム(RDBMS)という考え方で、
SQLという言語を使ってデータをかなり複雑に計算できようになります。
データベースで使われる用語としては「テーブル」「カラム」「レコード」があります。

MAMP画面のOpen WebStart pageをクリックすると、ブラウザでページが開きます。

TOOLS > PHPMYADMIN をクリックします。
もしくは「http://localhost:8888/phpMyAdmin/」をクリック

このようにphpMyAdminのトップ画面が表示されます。ここでデータベース/テーブルを作っていきます。

スクリーンショット動画は違いますが、今回はデータベース名を「cri_sortable」にしましょう。
こんな感じのテーブルデータを作ります。まず最初に1つのテーブルと対応する4つのカラムを作ります。
▼テーブル、カラムの登録方法

データベース名「cri_sortable」にテーブル名を「sortable」を作り、それぞれのカラムに「データ型、属性、AI」などを設定していきます。
データ型や属性はたくさん種類があるので、よく使うものを抜粋しています。
小数点を使う場合は「FLOAT、DOUBLE、DECIMAL」を使います。
またはSQL文で発行することも出来ます。phpMyAdminのSQLタブに入力することで実行できます。
まず、挿入 > ID1に、新垣結衣という名前を入れて、(x,y)座標をそれぞれ(810, 56)にします。
▼レコードの登録方法

こんな感じでデータを挿入していくと面倒なので、csv形式のデータをインポートしてみましょう。
CSVとはレコードデータのフィールドをカンマ「,」区切りで1行ずつ記述されている書類です。
エクセルで作ることもできますし、テキストエディタでデータをカンマ区切りすることでも作れます。
※文字コードUTF-8の書類をエクセルで開くと文字化けします。エクセルで開きたいときはテキストエディタで文字コードをSHIFT-JISに変更します。
CSVダウンロード
▼CSVのインポート方法
CSVの中身(レコード)が一気に登録されました。
フォーマット特有のオプション:「Update data....」は、「インポート時に重複したキーが見つかった場合にデータを更新する」という意味です。 1番の新垣結衣さんが先に入っていて重複してしまいますから、強制上書きするオプションです。
ここまでで、データベースを作り、テーブルと各カラム(データ)を挿入できました。 データベースに登録したデータを、ブラウザ(html+php)で表示させていきましょう。
データベースで使われる用語としては「テーブル」「カラム」「レコード」があります。
テーブル:エクセルで言うところのシートです。シート同士を組み合わせてデータを抽出します。
カラム :データを入れるための枠で、一般的には列と表現されます。
レコード:データそのものです。1カラムに対して複数のレコードが入ります。
例)
カラム :データを入れるための枠で、一般的には列と表現されます。
レコード:データそのものです。1カラムに対して複数のレコードが入ります。
例)
No. | 氏名 | 年齢 |
1 | 新垣結衣 | 23 |
2 | 齋藤飛鳥 | 20 |
3 | 佐々木希 | 30 |
phpMyAdminでMySQLを設定する準備


もしくは「http://localhost:8888/phpMyAdmin/」をクリック

①データベースの作成

②テーブルの作成
id | name | left_x | top_y |
---|---|---|---|
1 | 新垣結衣 | 810 | 56 |
2 | 北川景子 | 631 | 302 |
3 | 佐々木希 | 788 | 326 |
︙ | ︙ | ︙ | ︙ |
▼テーブル、カラムの登録方法

名前 | データ型 | 属性 | AI |
---|---|---|---|
id | INT | UNSIGNED | AUTO_INCREMENT |
name | TEXT | ||
left_x | INT | UNSIGNED | |
top_y | INT | UNSIGNED |
データ型や属性はたくさん種類があるので、よく使うものを抜粋しています。
データ型
数値型 | 値の範囲 | UNSIGNED付与(整数のみ) |
---|---|---|
TINYINT | -128 から 127 | 0 から 255 |
SMALLINT | -32,768 から 32,767 | 0 から 65,535 |
MEDIUMINT | -8,388,608 から 8,388,607 | 0 から 16,777,215 |
INT | -2,147,483,648 から 2,147,483,647 | 0 から 4,294,967,295 |
小数点を使う場合は「FLOAT、DOUBLE、DECIMAL」を使います。
文字型 | 値の範囲(文字) | 使い所 |
---|---|---|
CHAR(M) | 255 | 固定長文字列(M文字以下の文字が入る場合は空白で補う) |
VARCHAR(M) | 65,535 | 可変長文字列(M文字以下の文字が入る場合でも空白で補わない) |
TEXT | 65,535 | 可変長文字列(大きな文字列を入れたい場合) |
TINYTEXT | 255 | TEXTの短い版 |
属性
UNSIGNED | 整数(アン サインド) | マイナスの数値は入れないよ |
BINARY | バイナリー | 検索時に大文字小文字を区別 |
NULL
NULL値はデータが存在しないことを表す値。空白" "や0とは違います。NOT NULLでNULLが入れられなくなります。PRIMARY KEY
主キー。主キー制約が設定されたカラムの値は、ほかのカラムとの重複不可、かつNULLも不可。データにダブりがあるとだめな項目に。AI
AUTO_INCREMENT(オート インクリメント)。自動で連番の値が格納されます。
CREATE TABLE `cri_sortable`.`sortable` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` TEXT NOT NULL ,
`left_x` INT UNSIGNED NULL ,
`top_y` INT UNSIGNED NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB
③レコードの登録
データベース「cri_sortable」に「sortable」というテーブルを作ったので。sortableテーブルにレコード(データ)を登録してみましょう。まず、挿入 > ID1に、新垣結衣という名前を入れて、(x,y)座標をそれぞれ(810, 56)にします。
▼レコードの登録方法

※文字コードUTF-8の書類をエクセルで開くと文字化けします。エクセルで開きたいときはテキストエディタで文字コードをSHIFT-JISに変更します。
CSVダウンロード
▼CSVのインポート方法

フォーマット特有のオプション:「Update data....」は、「インポート時に重複したキーが見つかった場合にデータを更新する」という意味です。 1番の新垣結衣さんが先に入っていて重複してしまいますから、強制上書きするオプションです。
ここまでで、データベースを作り、テーブルと各カラム(データ)を挿入できました。 データベースに登録したデータを、ブラウザ(html+php)で表示させていきましょう。