@ PHP

data types:データ型

PHPには8 種類のデータ型(基本型)があります。

4 種類のスカラー型

※スカラー (scalar)とは、長さ・面積・質量・温度・時間など、大きさだけで定まる数量です。

  • 整数 (integer)
  • 浮動小数点数 (float, double も同じ)
  • 論理値 (boolean)
  • 文字列 (string)

2 種類の複合型

  • 配列 (array)
  • オブジェクト (object)

2 種類の特別な型

  • リソース (resource)
  • ヌル (NULL)

整数

整数(integer)は少数点がつかない数です。var_dump() 関数ではintで表示されます。

10進数、先頭に 0x をつけた 16進数、先頭に 0 をつけた 8 進数の あるいは 2 進数表記で指定可能です。オプションで、符号( – または + )を前に付けることが可能です。

整数のサイズはプラットフォームに依存し、その値は PHP_INT_SIZE 定数で確認できます。また、最大値も PHP_INT_MAX 定数で得ることができます。

PHP では最大値を超えた整数は自動的に不動少数点型に(float)にキャストされます。

data_types_integer_01.php

<?php
$int1 = 1; // 正の整数
print $int1."<br>\n";
$int2 = -1; // 負の整数
print $int2."<br>\n";
$int3 = 011; // 8進数表記で代入
print $int3."<br>\n";
$int4 = 0xff; // 16進数表記で代入
print $int4."<br>\n";
$int5 = PHP_INT_SIZE; // 整数型のサイズ (4)32ビット (8)64ビット
print $int5."<br>\n";
$int6 = PHP_INT_MAX; // 整数型の最大値
print $int6."<br>\n";
$int7 = PHP_INT_MAX+1; // 整数型の最大値を超えた数は自動的に不動少数点へ
var_dump($int7);
$int8 = 0b11111111; // 2進数 (10進数の255と等価)
print $int8."<br>\n";
?>

PHP は少数点を持つ数と持たない数を区別します。前者を浮動少数点数(folating point numbers)といい、後者を整数(integer)といいます。浮動少数点数は、精度の表現の違いで少数点が移動するのでそうよばれています。

PHP は、数を表現するためにオペレーティングシステムの演算機能を使いますので、使用可能な最大と最小の数や、浮動少数点数の桁は、システムによって違いがあります。

算術演算子

PHP で計算をする方法は、それがより早いという以外は、小学校の算数によく似ています、

プラス記号(+)は足し算、マイナス記号(-)は引き算、フォーワードスラッシュ(/)は割り算、アスタリスク(*)は掛け算です。パーセント記号(%)は割り算のあまりを返します。

data_types_math_01.php

<?php
print (2 + 2)."<br>";
print (17 - 3)."<br>";
print (10/3)."<br>";
print (6*9)."<br>";
print (17%3)."<br>";
?>

数のフォーマット

number_format() は、引数に指定した数を3桁のカンマ区切りにフォーマットした整数を返します。

data_types_number_format_01.php

<?php
echo number_format(1234);
?>

浮動小数点の場合は、第二引数に小数点以下の桁数を指定します。第二引数を指定しない場合は、小数点以下が四捨五入された整数を返します。

data_types_number_format_02.php

<?php
echo number_format(1234.456,3);
?>

不動少数点(floatまたはdouble)

浮動少数点は少数点のつく数です。値の範囲は、およそ-1.8×10の308乗~1.8×10の308乗です。var_dump()関数ではfloatで表示されます。

data_types_float_01.php

<?php
$num = 1.234;     // 浮動小数点数
print $num."<br>\n";
$num = 1.2e3;     // 浮動小数点数(指数表記)
print $num."<br>\n";
$num = 1.2E-3;     // 浮動小数点数(指数表記)
print $num;
?>

変数のfloat値を取得する

floatval()は引数に指定した値を浮動小数点値(float)に変換する関数です。

data_types_float_02.php

<?php
$var = '122.34343The'; // 文字列型
echo floatval( $var ); // 浮動小数点値に変換して出力
?>

論理値 (boolean)

論理値はtrue (真)またはfalse (偽)のどちらかを持ちます。大文字と小文字はどちらでもよくTRUE、FALSEやTrue、Falseとも書きます。通常は式や条件分岐とともに使います。var_dump()関数ではboolで表示されます。

data_types_boolean_01.php

<?php
$a = true;
var_dump($a);
?>

文字列 (string)

文字を並べたものを文字列といいます。文字列は「”」(ダブルクォーテーション)または「’」(シングルクォーテーション)で囲みます。var_dump()関数ではstringで表示されます。

datatypes_string_01.php

<?php
$a = "あ";
var_dump($a);
?>

「”」と「’」の違い

「” “」の中に変数を書くと、その値に変換されます。しかし、「’ ‘」の中ではそのまま文字列として扱われます。

data_types_string_02.php

<?php
$a = "Hello!";
$b = "$a";
$c = '$a';
echo $b;
echo $c;
?>

文字列の定義

プログラムで使われるテキストのひとまとまりのことを「文字列(string)」といいます。これは、一つひとつの文字が連なったものが糸(string)のようになるからです。

文字列には、文字、数字、句読点、空白、タブ、そして、特殊文字が含まれます。

PHP で文字列を定義する方法はいくつかありますが、一番簡単な方法は、文字列を単一引用符(single quote)で囲むことです。

data_types_string_03.php

<?php
print 'カップスープをお願いします。';
print 'チキンスープにしてください。';
print '546kcal';
print '"ごちそうさまでした。"美味しかった。';
?>

この4つの print 命令文は1行になります。print 命令文では改行は付け加えられません。

単一引用符で囲まれた文字列のなかで単一引用符を使いたい場合は、バックスラッシュ(\)を単一引用符の前に書きます。このバックスラッシュをエスケープ文字といいます。

data_types_string_04.php

<?php
print 'we\'ll each have a cup of soup.';
?>

エスケープ文字はそれ自体をエスケープできます。

data_types_string_05.php

<?php
print 'エスケープ文字は\\それ自身をエスケープできます。';
?>

改行を含む文字を単一引用符で囲んで文字列に含めることができます。

data_types_string_06.php

<?php
print '<ul>
<li>トースト</li>
<li>パンケーキ</li>
<li>ベーグル</li>
</ul>';
?>

二重引用符(duuble quates)でも文字列を定義できます。二重引用符で囲まれた文字列は単一引用符で囲まれた文字列とほぼ同じですが、さらに特殊な働きを持っています。

二重引用符で囲まれた文字列の中の特殊文字
文字 意味
n 改行
r 復帰
t タブ
$ $
\0..\77 8進数
\x0..\xFF 16進数

単一引用符と二重引用符の最大の違いは、二重引用符で囲まれた文字の中に変数を含めると、変数が値に置き換えられた文字列になります。

data_types_string_07.php

<?php
$breakfast = 'パンケーキ';
print '今日の朝食は$breakfast'."<br>\n";
print "今日の朝食は$breakfast";
?>

ヒアドキュメント

文字列をヒアドキュメント(here document)という構文で定義することもできます。

ヒアドキュメントは、<<< と区切りの単語で始めます。文字列の終わりは、区切りの単語を行頭に書きます。

data_types_here_document_01.php

<?php
print <<<_HTML_
<html lang="ja">

<head>
<title>メニュー</title>
</head>

<body bgcolor="#fffed9">
  <h1>ランチ</h1>
  <ul>
    <li>うにのクリームパスタ</li>
    <li>マッサマンカレー</li>
    <li>アメリカンクラブハウスサンド</li>
  </ul>
</body>

</html>
_HTML_;
?>

data_types_here_document_01.php では、区切り文字は _HTML_ です。ヒアドキュメントの区切り文字にはアルファベット、数字、アンダースコアが使えます。

ヒアドキュメントの終わりの行は、区切り文字だけを書きます。インデントをしたり、空白やコメント、あるいは、その他の文字をいれてはいけません。唯一の例外は、文の終わりを示すセミコロン(;)は区切り文字の直後に書くことができます。

文字列の結合

2つの文字列を結合するときは、文字列結合演算子の .(ピリオド)を使います。

data_types_string_08.php

<?php
print 'ごちそうさま。'.'美味しくいただきました。'."<br>\n";
print "会計をお願いします。".'クレジットカードは使えますか。'."<br>\n";
print "合計金額は".'1,380円です。';
?>

配列 (array)

複数の値を入れることができる変数を配列といいます。配列の値はarray()で設定しす。

data_types_array_01.php

<?php
$a = array("a","b","c");
var_dump($a);
?>

オブジェクト (object)

オブジェクト型とは、オブジェクトを扱うデータです。 オブジェクトというのは「オブジェクト指向」という概念に基づいたプログラミング手法のことです。var_dump()関数ではobjectで表示されます。

data_types_object_01.php

<?php
class Animal
{
    public $dog="ワンワン";
}
$obj = new Animal();
var_dump($obj);
?>

リソース (resource)

外部ファイルやデータベースへの接続IDのようなものを保持しておくのがリソース型です。var_dump()関数ではresourceで表示されます。

data_types_resource_01.php

<?php
$fp = fopen("file.txt", "r"); // 外部ファイルオープン
var_dump($fp); // $fpはリソース型
fclose($fp); // ファイルクローズ
?>

file.txt

ファイルを読み込んで出力します。

ヌル (NULL)

NULLは変数が値を持たないことを表します。NULL型の値はNULL1つのみです。nullとも書きます。var_dump()関数ではNULLで表示されます。

data_types_null_01.php

<?php
$a = NULL;
var_dump($a);
?>