作成日: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という言語を使ってデータをかなり複雑に計算できようになります。
データベースで使われる用語としては「テーブル」「カラム」「レコード」があります。
例)

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

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

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

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

top_yとleft_xはNULLにチェックを入れてね!(ここにチェック入れておくと、データが入らなかったら「データ無し」を登録できます)
データベース名「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を設定する準備


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

①データベースの作成

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

top_yとleft_xはNULLにチェックを入れてね!(ここにチェック入れておくと、データが入らなかったら「データ無し」を登録できます)
| 名前 | データ型 | 属性 | 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)にします。
▼レコードの登録方法

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

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