読者です 読者をやめる 読者になる 読者になる

ハロトレWebデザインの勉強 | 求職者支援訓練Webサイト制作科 フェリカテクニカルアカデミー

未経験者からプロになるハロートレーニングWebデザインの勉強

変数を使う - 応用

アルゴリズムを考える

  • アルゴリズム(algorithm)とは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う
変数に値を格納する理由
  • 変数(variable)は、「変化するもの」の意味で、値が変化したらそれに応じて結果も変化することになります
  • つまり、処理ごとの結果の値を変数に戻すことにより、複雑な処理を連続しておこなうことが可能になります

問題
2016年を平成で表示しなさい。


何をどう設定すれば、求める値が得られるかを考えます。

  1. 西暦を平成に変換するためには「1989年が平成1年」であることを利用する
  2. 「1989年が平成1年」ということは固定した考え方なので、定数として定義する
定数
  • 定数(constant 変わらない)の意味で、値を格納することを定義(define)と呼びます
  • 定数には値を代入できません
<?php
//1989年が平成1年であることを定義します
define ( 'HEISEI', 1989 );


変数と定数を設定して記述

<?php
//1989年が平成1年であることを定義します
define ( 'HEISEI', 1989 );
//西暦2016年の数値を変数に代入
$year = 2016;
$msg = '西暦' . $year . '年は、平成';
//2016-1989+1
$msg .= ( $year - HEISEI + 1 ) . '年です。';

echo $msg;

数字は、数値or文字列

  • 半角数字は「数値」として扱われる仕様です
  • 文字列が一般的な数値としての表現なら、数値と文字列の計算式を入れてもPHPが勝手に数値として計算してくれます
<?php
$num = 15;
$str = '15';

echo $num + 3;
echo '<br>';
echo $str + 3;
var_dump
  • 変数に関する情報をダンプする
  • この関数は、指定した式に関してその型や値を含む構造化された情報を 返します
<?php
$num = 15;
$str = '15';

var_dump( $num );
echo '<br>';
var_dump( $str );
echo '<br>';
echo $num + 3;
echo '<br>';
echo $str + 3;



この時点で、変数に代入された値の型は、以下のようになっています。

  • int(Integer):整数(数値)
  • string:文字列
<?php
$num = 15;
$str = '15';

var_dump( $num );
echo '<br>';
var_dump( $str );
echo '<br>';
echo $num += 3;
echo '<br>';
var_dump( $num );
echo '<br>';
echo $str += 3;
echo '<br>';
var_dump( $str );


  • それぞれに数値の3を加算した結果、文字列も数値に変更されています
  • 「 $num * $str 」の場合も、数値に変更されます


これは、変数の値が「数値」ではないのに「数値」として見なされたことによります。

値の妥当性をチェック
  • is_numeric関数
  • 数値または数値文字列かどうかをチェックする関数
<?php
$a = '0円';
$b = '整数';
$c = '3倍お得';

if ( ! is_numeric($a) ) echo 'YES';
echo '<br>';
if ( ! is_numeric($b) ) echo 'YES';
echo '<br>';
if ( ! is_numeric($c) ) echo 'YES';
echo '<br>';

if ( $a == 0) echo '$aはゼロ<br>';
if ( $b == 0) echo '$bはゼロ<br>';
if ( $c == 3) echo '$cは3<br>';
echo $c + 100;


否定

  • 否定(NOT)は、TRUEをFALSEに、FALSEをTRUEに反転する性質をもっています
  • 演算子は「!」
<?php
$true = TRUE;   // 確認のためまず変数に論理型を代入しておく
$false = FALSE;

$a = !$true;  // TEUEの否定なので結果はFALSE
$b = !$false; // FALSEの否定なので結果はTRUE
$c = !$true && !$true;  // TRUEの否定(FALSE)同士のANDはFALSE
$d = !($true && $true); // TRUE同士のANDの結果(TRUE)を反転してFALSE
var_dump($a, $b, $c, $d);


※改行コード出力の記述「echo '<br>';」は、割愛