#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 "不合格です";
}
?>
xxがyyもしくはzzのときは…といった条件式に使用します。
名前結果
$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とfalseで返します。 例では同じ「1」ですが上は文字としての「1」、下は数字としての「1」になります。
=右辺の値を左辺に代入
==等しい(データ型を無視)等しいと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という言語を使ってデータをかなり複雑に計算できようになります。
データベースで使われる用語としては「テーブル」「カラム」「レコード」があります。
テーブル:エクセルで言うところのシートです。シート同士を組み合わせてデータを抽出します。
カラム :データを入れるための枠で、一般的にはと表現されます。
レコード:データそのものです。1カラムに対して複数のレコードが入ります。
例)
No.氏名年齢
1新垣結衣23
2齋藤飛鳥20
3佐々木希30

phpMyAdminでMySQLを設定する準備

MAMP画面のOpen WebStart pageをクリックすると、ブラウザでページが開きます。
TOOLS > PHPMYADMIN をクリックします。
もしくは「http://localhost:8888/phpMyAdmin/」をクリック
このようにphpMyAdminのトップ画面が表示されます。ここでデータベース/テーブルを作っていきます。

①データベースの作成

スクリーンショット動画は違いますが、今回はデータベース名を「cri_sortable」にしましょう。

②テーブルの作成

idnameleft_xtop_y
1新垣結衣81056
2北川景子631302
3佐々木希788326
こんな感じのテーブルデータを作ります。まず最初に1つのテーブルと対応する4つのカラムを作ります。

▼テーブル、カラムの登録方法
データベース名「cri_sortable」にテーブル名を「sortable」を作り、それぞれのカラムに「データ型、属性、AI」などを設定していきます。
名前データ型属性AI
idINTUNSIGNEDAUTO_INCREMENT
nameTEXT
left_xINTUNSIGNED
top_yINTUNSIGNED

データ型や属性はたくさん種類があるので、よく使うものを抜粋しています。
表示する/非表示にする

データ型

数値型値の範囲UNSIGNED付与(整数のみ)
TINYINT-128 から 1270 から 255
SMALLINT-32,768 から 32,7670 から 65,535
MEDIUMINT-8,388,608 から 8,388,6070 から 16,777,215
INT-2,147,483,648 から 2,147,483,6470 から 4,294,967,295

小数点を使う場合は「FLOAT、DOUBLE、DECIMAL」を使います。
文字型値の範囲(文字)使い所
CHAR(M)255固定長文字列(M文字以下の文字が入る場合は空白で補う)
VARCHAR(M)65,535可変長文字列(M文字以下の文字が入る場合でも空白で補わない)
TEXT65,535可変長文字列(大きな文字列を入れたい場合)
TINYTEXT255TEXTの短い版

属性

UNSIGNED整数(アン サインド)マイナスの数値は入れないよ
BINARYバイナリー検索時に大文字小文字を区別

NULL

NULL値はデータが存在しないことを表す値。空白" "や0とは違います。NOT NULLでNULLが入れられなくなります。

PRIMARY KEY

主キー。主キー制約が設定されたカラムの値は、ほかのカラムとの重複不可、かつNULLも不可。データにダブりがあるとだめな項目に。

AI

AUTO_INCREMENT(オート インクリメント)。自動で連番の値が格納されます。
またはSQL文で発行することも出来ます。phpMyAdminのSQLタブに入力することで実行できます。

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)で表示させていきましょう。
powerd by