作成日:2021/04/12 更新日:2022/08/03
#8 PHPを便利にするいろんな記号
変数をつなげる
文字列や変数をつなぐためには.を使います。
<?php
$name = '大橋太郎';
$measage = 'こんにちは!';
echo $name . $measage; /* 大橋太郎こんにちは */
echo $name . 'さん' . $measage; /* 大橋太郎さんこんにちは */
$aisatsu = 'おはようございます、';
$aisatsu .= '寒いですね'. $name . '。';
echo $aisatsu; /* おはようございます、寒いですね大橋太郎。 */
?>
$aisatsu.='寒いですね' は$aisatsu = $aisatsu . '寒いですね'を略したものです。
足し算、引き算、掛け算、割り算
簡単な四則演算(+ - × ÷)をさせるための記号です。
<?php
$a = 2;
$b = 5;
echo ($a + 3); /* 2+3 = 5 */
echo -$b; /* -5 */
echo ($b - 3); /* 5-3 = 2 */
echo ($a * $b); /* 2*5 = 10 */
echo ($a / $b); /* 2/5 = 0.4 */
echo ($a % $b); /* 2%5 = 2 */
echo ($a ** $b); /* 2**5 = 32 */
?>
例 | 名前 | 結果 |
$a + $b | 足し算(加算) | $a および $b の合計 |
-$a | 負(正)にする | プラスをマイナスに、マイナスをプラスに変更 |
$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; /* 3 */
$b = 5;
$c = 8;
$b += $c; /* $b+$cの値を、$bに代入 */
echo $b; /* 13 */
?>
$a = 3 とは $a は 3 と等しい…ではなく、$a という箱の中に数字の 3 を代入するということです。
1づつ足す(引く)
<?php
$i = 5;
echo ++$i; /* 6 */
$i = 10;
echo $i++; /* 10 */
echo $i; /* 11 */
$i = 20;
echo --$i; /* 19 */
$i = 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 を引きます。 |
条件を`2つ`にする
<?php
$math = 48; /* 数学 */
$english = 87; /* 英語 */
if ($math > 50 || $english > 60){ /* 条件: 数学は50点以上、英語は60点以上、どちらかが真なら。という式 */
echo "合格です"; /* 条件のどちらかがtrueならこの文が実行 */
}else{
echo "不合格です"; /* 条件のどちらもfalseならこの文が実行 */
}
?>
上記の例では、$mathは数字が下回っているのでfalseになりますが、$englishはtrueになるので、最初の文が実行され、`合格です`が出力されます。
例 | 結果 |
$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 |
データの型を比較する
<?php
$a = '1'; /* string型(文字列) */
$b = 1; /* integer型(整数)*/
if($a == $b){
echo '真'; /* どちらも`1`となりこの文が実行される */
}else{
echo '偽';
}
if($a === $b){
echo '真';
}else{
echo '偽'; /* 型が違うので、この文が実行される */
}
?>
左辺の値を、右辺の値と比較してどうなるかをtrueとfalseで返します。
例では同じ「1」ですが$aは文字としての「1」、$bは数字としての「1」になります。
= | 右辺の値を左辺に代入 | |
== | 等しい(データ型を無視) | 等しいとtrue |
=== | 等しい(データ型も含む) | 等しいとtrue |
!= | 等しくない | 等しくないとtrue(<>も同じ) |
!== | 等しくない(データ型も含む) | 等しくないとtrue |
$a < $b | $aが$bより小さい | 小さいtrue |
$a <= $b | $aが$bより小さいか等しい | 小さいか等しいとtrue |
データの型を知ろう
データ型とはデータの性質(種類)のことです。文字型 | 'Hello!' '1' | strings。文字として認識される文字列のこと |
整数型 | 1, 100 | integer。足し算引き算できる数字 |
不動小数点数型 | 1.4142, -0.08, 120.5 | float。どこかに小数点が入るような数字 |
論理型 | TRUE FALSE | boolean。正しいか、誤っているか |
配列型 | array('りんご', 'apple') | array |
オブジェクト型 | $obj = new someclass(); | object |
ヌル型 | NULL | null。無とか空。ゼロではない |
if文を簡単に。三項演算子
<?php
$lang = 'English';
$message = $lang === 'Japanese' ? 'こんにちは' : 'Hello';
echo $message; /* Helloが出力されます */
?>
条件式 ? 真の式 : 偽の式$lang == 'Japanese' であれば、'こんにちは' そうでないなら 'Hello' を表示させるという式です。
その結果を変数$messageに代入してね。という式です。
if文のような機能ですが、あくまで式(値)を呼び出すだけです。ifのように条件式はかけませんが、シンプルに式を書けます。
実際にこれらの記号は演算子と呼ばれ、にはそれぞれ名称がついていますが、機能を先に身につけて名称はおいおい覚えておきましょう。
PHPマニュアル
PHPマニュアル
+、-、*、/、%代数演算子 | 簡単な四則演算(+ - × ÷)をさせるための記号です。 |
+代入演算子 | 文字や数字を代入するための記号です。 |
.結合演算子 | 左と右のものを足す |
.=結合代入演算子 | $a .= $bの結果は$a = $a . $b 文字列の結合 |
+=、-=、*=算術代入演算子 | $a += $bの結果は$a = $a + $b |
and、||、&&理論演算子 | 条件の複数指定 |
++、--加算子/減算子 | 1つづつ足す(引く) |
#9 データベース(DB)を作る
データベースとはわかりやすく言えばエクセルのおばけ 👻 です。エクセルでも簡単な計算はできますが、
データベースはリレーショナル データベース マネジメント システム
複数のテーブルデータを連携させたデータベース管理の考え方 という考え方で、
SQLという言語を使ってデータをかなり複雑に計算できようになります。
データベースで使われる用語としては「テーブル」「カラム」「レコード」があります。
例)
もしくは「http://localhost:8888/phpMyAdmin/」をクリック
このようにphpMyAdminのトップ画面が表示されます。ここでデータベースやテーブルを作っていきます。
こんな感じのテーブルデータを作ります。まず最初に1つのテーブルと対応する4つのカラムを作ります。
▼テーブル、カラムの登録方法
データベース名「cri_sortable」にテーブル名を「sortable」を作り、それぞれのカラムに「データ型、属性、NULL、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カラムに対して複数のレコード(横軸)が入ります。 |
例)
No. | 氏名 | 年齢 | |
1 | 新垣結衣 | 23 | ←レコード |
2 | 齋藤飛鳥 | 20 | ←レコード |
3 | 佐々木希 | 30 | ←レコード |
↑カラム | ↑カラム | ↑カラム |
phpMyAdminでMySQLを設定する準備
MAMP画面のOpen WebStart pageをクリックすると、ブラウザでページが開きます。 TOOLS > PHPMYADMIN をクリックします。もしくは「http://localhost:8888/phpMyAdmin/」をクリック
このようにphpMyAdminのトップ画面が表示されます。ここでデータベースやテーブルを作っていきます。
①データベースの作成
スクリーンショット動画は違いますが、今回はデータベース名を「cri_sortable」にしましょう。②テーブルの作成
id | name | left_x | top_y |
---|---|---|---|
1 | 新垣結衣 | 810 | 56 |
2 | 北川景子 | 631 | 302 |
3 | 佐々木希 | 788 | 326 |
︙ | ︙ | ︙ | ︙ |
▼テーブル、カラムの登録方法
データベース名「cri_sortable」にテーブル名を「sortable」を作り、それぞれのカラムに「データ型、属性、NULL、AI」などを設定していきます。
名前 | データ型 | 属性 | NULL | 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)にします。
▼レコードの登録方法
こんな感じでデータを挿入していくと面倒なので、csv形式のデータをインポートしてみましょう。 CSVとはレコードデータのフィールドをカンマ「,」区切りで1行ずつ記述されている書類です。 エクセルで作ることもできますし、テキストエディタでデータをカンマ区切りすることでも作れます。
※文字コードUTF-8の書類をエクセルで開くと文字化けします。エクセルで開きたいときはテキストエディタで文字コードをSHIFT-JISに変更します。
CSVダウンロード
▼CSVのインポート方法 CSVの中身(レコード)が一気に登録されました。
フォーマット特有のオプション:「Update data....」は、「インポート時に重複したキーが見つかった場合にデータを更新する」という意味です。 1番の新垣結衣さんが先に入っていて重複してしまいますから、強制上書きするオプションです。
ここまでで、データベースを作り、テーブルと各カラム(データ)を挿入できました。 データベースに登録したデータを、ブラウザ(html+php)で表示させていきましょう。