【PHP第2回】変数・定数・データ型・いろいろな演算子

【PHP第2回】変数・定数・データ型・いろいろな演算子

PHPのプログラミングメモ第2回です。何回かに分けてメモを投稿していきます。なお、この記事はプログラミングメモですので、どんどん追記していきます。

【コードの格納先】


【関連記事】

変数

変数とは

  • 前に$をつけて宣言
  • 英字、数字、アンダーバーが使える
  • 先頭に数字は使えない

キャメルケース

//一部大文字
$userCount = 0;
$userId = 1;
$inputFileName = "test.txt";

スネークケース

///単語をアンダースコアで区切る
$user_count = 0;
$user_id = 1;
$input_file_name = "test.txt";

分かりにくい変数名の例

なんの変数か分からないのでこのような書き方はしないのがベター。

$a = 0;
$b = 1;
$c = "test.txt";

分かりやすい変数名と分かりにくい変数名の比較

// 変数名はわかりやすくする
// キャメルケースとスネークケースが混在すると単語の区切りがわからない
// キャメルケースかスネークケースのどちらかで統一し、わかりやすく書く
$usercount = 0; //分かりにくい
$userCount or $user_count //分かりやすい

$userid = 1; //分かりにくい
$userId or $user_id //分かりやすい

$inputfilename = "test.txt"; //分かりにくい
$inputFileName or $input_filename //分かりやすい

変数の命名規則

current user item を要素語とした複合語の記法を例に記載

キャメルケース( camelCase )

  • 記載例:currentUserItem
  • 先頭の要素語( current )は小文字で書き始める
  • 先頭以外の要素語( user item )の最初を大文字で書き始める
  • 別名:ローワーキャメルケース

パスカルケース( PascalCase )

  • 記載例:CurrentUserItem
  • 要素語( current user item )の最初を大文字で書き始める
  • 別名:アッパーキャメルケース

スネークケース( snake_case )

  • 記載例:current_user_item
  • アンダースコア で要素語( current user item )を連結

ケバブケース( kebab-case )

  • 記載例:current-user-item
  • ハイフン で要素語( current user item )を連結

本ブログでの命名規則

原則、以下で記載していきます。

  • 関数 キャメルケース
  • 変数 スネークケース

ローカル変数・グローバル変数

変数のスコープ

  • 変数には「使える範囲(スコープ)」がある
  • 関数内で宣言された変数は関数の外では使えない
  • ※if文やfor文などの制御構文はその中で変数を作っても外で使える
  • 関数内でのみ使える変数:ローカル変数
  • 関数の外で作られた変数:グローバル変数
  • 関数内でグローバル変数を使いたい場合:globalをつける

定数

// データの入れ物 値の書き換えが不可能
// 書き方
// define(定数名,値);
// sample code
define("GOOGLE_URL", "https://www.google.co.jp");
echo GOOGLE_URL;

// result
https://www.google.co.jp

データ型

  • 変数には型がある
  • 型とは「中に何を入れるか」決めたもの
  • PHPの方は特殊
    動的型付け言語と呼ばれ、変数内に入れたものをプログラムが自動で解釈する
// 文字列型     string
// 整数型       int
// 不動小数点型  float
// bool型      true/false
// 配列         array
// オブジェクト  object
// ※PHPでは型の宣言はしなくても良い場合がある/自動解釈するため
// ※動的型付言語

【公式ドキュメント】

// sample code
// 変数を宣言
$number = 5;
$text = "test";
$flag = true;
$test = null;

// 確認のため変数を出力
echo $number,PHP_EOL;
echo $text,PHP_EOL;
echo $flag,PHP_EOL;
echo $test,PHP_EOL;
echo "----------",PHP_EOL;

// 変数の型を確認
var_dump($number)."\n";
var_dump($text)."\n";
var_dump($flag)."\n";
var_dump($test)."\n";
// result
5
test
1
----------
int(5)
string(4) "test"
bool(true)
NULL

debug

// var_dump:型に関する情報をダンプする
// sample code
$word = "php";
var_dump($word);

// result
string(3) "php"

【公式ドキュメント】
var_dump


文字列

【ダブルクォーテーション】

" "
// 変数を展開する
// 特殊文字(改行コード\n)を展開する

【シングルクォーテーション】

’ ’
// 変数を展開しない
// 特殊文字(改行コード\n)を展開しない

改行コードについて

  • 「\n」はシングルクォーテーションで使えない
  • シングルクォーテーションはエスケープシーケンスが使えないので、’\n’も使えない
  • 「PHP_EOL」実行環境のOSに対応する改行コードを出力する定数。こちらを使うのが無難

PHP_EOLについて

  • PHP_EOLは改行コード
  • 改行コードは文字列
  • phpでは文字列を結合した場合、整数型や真偽値などの単一な値は文字列にキャストされる

いろいろな演算子

代入演算子と算術演算子

代入演算子

=
// 右のものを左に入れる

算術演算子

// 変数などを足したり、引いたり、掛けたり、割ったりできる
// プログラム特有
// 余り算 %

//インクリメント デクリメント
 インクリメント ++ 1足す
 デクリメント   -- 1ひく
// sample
// 本来はわかりやすい変数にするべきだが、仮で以下の変数を宣言
$a = 10 + 5;
$b = 10 - 5;
$c = 10 / 5;
$d = 10 * 5;
$e = 10 % 5;
$f = (1 + 2) * 3 * (4 + 5);

// 型を確認してみる
var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
var_dump($e);
var_dump($f);

// 変数$gに1を足す処理
$g = 50;
$g++;
var_dump($g);

// 変数$gから1を引く処理
$g--;
var_dump($g);

// 変数$nameに文字列を入れて出力してみる
// 改行コードは「PHP_EOL」が利用可能
$name = "Jiro";
$value1 = "Hello {$name},PHP_EOL";
$value2 = 'Hello $name,PHP_EOL';
echo $name;
echo $value1;
echo $value2;

注意点

  • 算術演算子の前には必ず前後にスペースを入れること

 

// sample code 1
echo "----------",PHP_EOL,"sample code 1",PHP_EOL,"----------",PHP_EOL;
// 基本的な計算
// 整数型の2つの変数を宣言
// 2つの変数を用いて、 足す、引く、かける、割る、割った余りを出力

$int_num1 = 8;
$int_num2 = 7;

// 足す
echo $int_num1 + $int_num2,PHP_EOL;
var_dump($int_num1 + $int_num2)."\n";

// 引く
echo $int_num1 - $int_num2,PHP_EOL;
var_dump($int_num1 - $int_num2)."\n";

// かける
echo $int_num1 * $int_num2,PHP_EOL;
var_dump($int_num1 * $int_num2)."\n";

// 割る
echo $int_num1 / $int_num2,PHP_EOL;
var_dump($int_num1 / $int_num2)."\n";

// 割った余り
echo $int_num1 % $int_num2,PHP_EOL;
var_dump($int_num1 % $int_num2)."\n";

比較演算子

// 変数など2つを比較する条件式を書くことができる
// 補足
==   // 同じかどうか
===  // 型までチェック

論理演算子

// 比較する条件式は複数でもOK
// 複数の場合は「かつ」なのか「または」なのか演算子をつける

&&     // かつ
||     // または(パイプライン2つ)
!      // ではない(じゃない)
// sample code 2
echo "----------",PHP_EOL,"sample code 2",PHP_EOL,"----------",PHP_EOL;

// 条件式とboolean(論理型)
// 初期値がfalseである論理型の変数を宣言
// sample code 2で宣言した2つの変数を足した結果が偶数であれば、論理型の変数にtrueを代入

// 変数を宣言
$flag = false;

if(($int_num1 + $int_num2) % 2 == 0){
    $flag = true;
}
// 確認のためフラグの状態を出力
var_dump($flag);

echo "----------",PHP_EOL,"sample code 3",PHP_EOL,"----------",PHP_EOL;
// sample code 3 のboolean型の変数を利用した条件式を作成し、以下のように出力
// ・偶数の場合「even number」
// ・奇数の場合「odd number」

if ($flag == true) {
    echo "even number",PHP_EOL;
} else {
    echo "odd number",PHP_EOL;
}
// 出力結果

----------
sample code 1
----------
15
int(15)
1
int(1)
56
int(56)
1.1428571428571
float(1.1428571428571428)
1
int(1)
----------
sample code 2
----------
bool(false)
----------
sample code 3
----------
odd number