My Photo

« MySQLメモ001:コマンドラインクライアント | Main | PHPメモ004:演算子 »

January 01, 2012

PHPメモ003:データ型

弱い動的型付け

PHPは弱い動的型付けの言語なので、変数がどの型になるかは実行時に動的に決まる。

文字列

引用符で囲まれた文字列では変数は展開されずエスケープシーケンスは無効である。
二重引用歩で囲まれた文字列では変数は展開されエスケープシーケンスは有効である。ただし変数は波括弧で囲む。

ヒアドキュメント

改行を含む長い文字列を表現するのに便利。IDは"ID"じゃなくても分かりやすいものを付けられる。たとえば長いSQL文ならIDは"SQL"とか。
文字列内に変数があれば展開される。

<<<ID
<任意の文字列>
ID
コード
$name = '山田太郎';

$str1 = '氏名:${name}<br />\n';
$str2 = "氏名:${name}<br />\n";
$str3 = "氏名:{$name}<br />\n";

$str4 = <<<SQL
SELECT
  s.ProductID, p.ProductName, SUM(s.Quantity) AS total
FROM
  Sales AS s 
  JOIN Products As p 
  ON s.ProductID = p.ProductID
GROUP BY
  s.ProductID, p.ProductName
ORDER BY
  s.ProductID
SQL;

$str5 = <<<MESSAGE
ユーザ${name}はアクセス権がありません。<br />
アクセス権を持つユーザでログインしてください。<br />
MESSAGE;
?>

<?= $str1 ?>
<?= $str2 ?>
<?= $str3 ?>

<pre>
<?= $str4 ?>
</pre>

<?= $str5 ?>

出力
氏名:${name}<br />\n氏名:山田太郎<br />
氏名:山田太郎<br />

<pre>
SELECT
  s.ProductID, p.ProductName, SUM(s.Quantity) AS total
FROM
  Sales AS s 
  JOIN Products As p 
  ON s.ProductID = p.ProductID
GROUP BY
  s.ProductID, p.ProductName
ORDER BY
  s.ProductID</pre>

ユーザ山田太郎はアクセス権がありません。<br />
アクセス権を持つユーザでログインしてください。<br />

論理型

TRUEとFALSEの2値のみ。大文字小文字は区別しない。
論理型が文字列に自動変換される場合、
TRUE → "1"
FALSE → 空文字列
となる。
論理型への変換においては、FALSEとみなされるのは以下である。

  • 整数の0
  • 浮動小数点数の0.0
  • 空文字列
  • 文字列の"0"
  • NULL
  • 初期化されていない変数の値
  • 要素数0の配列

コード

$bool1 = TRUE;
$bool2 = FALSE;
echo "TRUEは文字列に変換すると\"${bool1}\"<br />\n";
echo "FALSEは文字列に変換すると\"${bool2}\"<br />\n";

$a = 0;
if ($a)	echo "0はTRUEとみなされる。<br />\n";
else	echo "0はFALSEとみなされる。<br />\n";

$b = "";
if ($b)	echo "空文字列はTRUEとみなされる。<br />\n";
else	echo "空文字列はFALSEとみなされる。<br />\n";

$c = "0";
if ($c)	echo "文字列\"0\"はTRUEとみなされる。<br />\n";
else	echo "文字列\"0\"はFALSEとみなされる。<br />\n";

if ($d)	echo "初期化されていない変数はTRUEとみなされる。<br />\n";
else	echo "初期化されていない変数はFALSEとみなされる。<br />\n";

$e = array();
if ($e)	echo "要素数0の配列はTRUEとみなされる。<br />\n";
else	echo "要素数0の配列はFALSEとみなされる。<br />\n";

$f = 1;
if ($f)	echo "1はTRUEとみなされる。<br />\n";
else	echo "1はFALSEとみなされる。<br />\n";

$g = "a";
if ($g)	echo "\"a\"はTRUEとみなされる。<br />\n";
else	echo "\"a\"はFALSEとみなされる。<br />\n";

出力
TRUEは文字列に変換すると"1"<br />
FALSEは文字列に変換すると""<br />
0はFALSEとみなされる。<br />
空文字列はFALSEとみなされる。<br />
文字列"0"はFALSEとみなされる。<br />
初期化されていない変数はFALSEとみなされる。<br />
要素数0の配列はFALSEとみなされる。<br />
1はTRUEとみなされる。<br />
"a"はTRUEとみなされる。<br />

« MySQLメモ001:コマンドラインクライアント | Main | PHPメモ004:演算子 »

PHP」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/53627291

Listed below are links to weblogs that reference PHPメモ003:データ型:

« MySQLメモ001:コマンドラインクライアント | Main | PHPメモ004:演算子 »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof