チャチャッとPHPブログ

プログラミング初心者むけPHP学習をまとめています
2020/05/20

【STEP 3】PHPを学ぼう 定数 / if文 / 変数の「型」/ キャスト

STEP 3

8
定数を
つかおう

プログラミングはたくさんの変数を使います。間違えて同じ変数につかってしまうと、意図せずデータを書き換えてしまうことになります。これは致命的なエラーになります。

ここで定数の出番です。変数と逆の立場にあるのが定数です。定数は、一度入れたらデータを入れ替えることができない特性があります。

上書きされたくない重要な数値、文字列は定数にいれておけば書き換えられることがありません。より安全に開発することができます。

定数はdefine関数を使います。

◎関数とは
関数とは役立つマシンのようなものです。数値や文字を渡すと、求める結果にして返してくれます。関数はたくさんの種類があります。

例)変数の中身を表示したい
 >> var_dump関数を使います

$data = 100;
var_dump($data);
 → int(100)が表示されます。


例)変数の文字列の長さを知りたい
>>strlen関数を使います

$data = 'abc';
$nagasa = strlen($data);
 → 3 が変数に入ります。

関数名()の形で使います。
関数については、後ほど詳しい説明をします。ここでは軽くで進めます。


サンプルコード

<?php
define("URL", "https://tyatya.skoboo.net/");
echo URL;
?>

実行結果

https://tyatya.skoboo.net/
URLという定数に文字列が入りました。この定数は上書きできません。

定数の用途としては、よく呼び出される不変のデータ(パス、URL、開発モード)などで使われているのを目にします。

定数の名前は他の変数の名前と明らかに区別するために、すべて大文字にするなどの工夫をしたほうがいいでしょう。

9
if文を
つかおう

if文は条件分岐を使うプログラミングに必須です。if文とは、条件式から判断し、一致したら処理します。

2つの値の大小や、等しい・等しくないなどの条件により処理を変える場合によく使われます。

構文としては
if ( 条件式 ) {
// 条件が一致したときに実行する処理
}
条件式の結果は真(true)か偽(false)という言い方で表します。



サンプルコード①

<?php
 
$value1 = 200;
$value2 = 100;
 
if ($value1 > $value2){
  echo "value1はvalue2より大きい<br/>\n";
}

$a = "PHP";
$b = "PHP";

if ($a == $b){
  echo "ドルaとドルbは同じ文字ですね<br/>\n";
}
 
?>

実行結果①

value1はvalue2より大きい
ドルaとドルbは同じ文字ですね


else をつけることで一致しないときの処理も記述できます。

サンプルコード②

<?php
 
$value1 = 200;
$value2 = 300;
 
if ($value1 > $value2){
  echo "value1はvalue2より大きい";
}else{
  echo "value1はvalue2より大きくない";
}

?>

実行結果②

value1はvalue2より大きくない


さらに elseif をつけることもできます。別の条件と一致しないときの追加の条件式の処理も記述できます。

サンプルコード③

<?php

$value1 = 300;
$value2 = 300;
 
if ($value1 > $value2){
  echo "value1はvalue2より大きい";
}elseif ($value1 == $value2){
  echo "value1とvalue2はおなじ";
}else{
  echo "value1はvalue2より大きくない";
}

?>

実行結果③

value1とvalue2はおなじ

if文が縦にながくなってきました。覚えておきたいことは「上から順に」条件式は処理されます。

また、条件式にある「<」「==」には書き方と種類があります。

■条件式に使う比較演算子

◎等しい:$値1 == $値2
$値1 が $値2 に等しい時にTRUEを返します。

◎等しい:$値1 === $値2
$値1 が $値2 に等しい、および同じ型の場合にTRUEを返します。

◎等しくない:$値1 != $値2
$値1 が $値2 に等しくない場合にTRUEを返します。

◎等しくない:$値1 <> $値2
$値1 が $値2 に等しくない場合にTRUEを返します。

◎等しくない:$値1 !== $値2
$値1 が $値2 と等しくない、および同じ型でない場合にTRUEを返します。

◎より少ない:$値1 < $値2
$値1 が $値2 より少ない時にTRUEを返します。

◎より多い:$値1 > $値2
$値1 が $値2 より多い時にTRUEを返します。

◎より少ないか等しい(以上):$値1 <= $値2
$値1 が $値2 より少ないか等しい時にTRUEを返します。

◎より多いか等しい(以下):$値1 >= $値2
$値1 が $値2 より多いか等しい時にTRUEを返します。

この条件式に使う「<」や「==」は「比較演算子」と呼ばれています。

変数の「型」
変数はそれぞれデータのタイプ(型)があります。PHPは、変数に値を入れると自動的に型が決まります。

◎変数の型
・boolean 論理値(論理型)
・integer 整数(整数型)
・float(または、double) 浮動小数点数(浮動小数点型)
・string 文字列
・array 配列
・resource リソース
・NULL ヌル値
※今すぐにすべてを覚える必要はありません


変数の型が、さきほどの「比較演算子」の中にある重要な2つに関わってきます。

◎等しい:$値1 === $値2
$値1 が $値2 に等しい、および同じ型の場合にTRUEを返します。

◎等しくない:$値1 !== $値2
$値1 が $値2 と等しくない、および同じ型でない場合にTRUEを返します。

「!==」「===」を使うときですが、これは「型」を意識しなければいけません。

PHPでは変数の型を自動で決めてくれるのでスムーズです。しかし、この自動決定が、意図しない結果になることもあります。

例をあげると
$a = "1";
if( $a === 1 ) {
	echo "OK"; // 出力されない!
}

上記の場合は OK と出力されません。$a === 1 がTRUEを返しません。

$a === 1 の「1」は整数です。PHPは、変数に""をつけて値を入れると「文字列型(string)」と自動で解釈してくれます。
そのため $a には文字列の「1」が入っており、型が違います。型が一致しないため、$a === 1 がTRUEを返しません。

条件式を成立させるには型をあわせる必要があります。型を合わせる方法として「キャスト」があります。

変数の「型」を変換する「キャスト」
文字列、整数、小数。変数の型をきっちり決めることができます。また変数の型を変換する方法を「キャスト」といいます。

キャストすることで、改めてきっちりデータの型を示したり、明示して変数にしまったりできます。

たとえば(int)をつけると整数型に変換することができます。

$a = "1";
if( (int)$a === 1 ) {
	echo "OK"; // 「OK」と出力される
}
上記の場合は $a === 1 はTRUEになり、「OK」とでてきます。(int)をつけることで、$aは一時的に整数型の「1」に変換され、型も一致できているからです。

キャストの方法と種類は以下になります。

◎キャストの方法と種類
(int),(integer) – 整数型へキャスト
(bool),(boolean) – 論理値へキャスト
(float),(double),(real) – 浮動小数点数(float)へキャスト
(string) – 文字列へキャスト
(array) – 配列へキャスト
(object) – オブジェクトへキャスト
※今すぐにすべてを覚える必要はありません


実際の開発現場においては「!==」や「===」の[型まで同じの条件式]を多く使います。

できるだけ、あいまいに処理することがないほうが間違いが少なく、さらに問題が起きたときに原因を減らすことができるからです。

はじめのうちの慣れないないうちは、特に意識せずで構いません。
前へ前へすすめましょう。

記事

カテゴリ

About me

Name : sin (@Sin_Programming)
ディレクター | プログラマ | プログラム開発15年目 | PHP/JavaScript/Swiftが好きです。 プログラミング初心者の方向けのPHP学習iPhoneアプリ「チャチャッとPHP」を作成しました。 PHPプログラムをムダなく学習できる方法としてまとめています。
iPhoneアプリ「チャチャッとPHP」8日で覚えるPHP