「PHP/入門/変数と値」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎未定義変数: 2022年12月現在の最新の安定バージョン v8.1.13 では、未定義(Undefined)の変数参照すると警告文(warning)が出ます。→‎エラー制御演算子(@): エラー制御演算子(@)は、名前と機能がやや乖離していて、「メッセージ抑制演算子」程度の機能しかありません。 エラー制御演算子には、トラブルシューティングに役立つエラーや警告を表示させないという害悪があるので、他の方法(例えば例外処理)を検討するべきです。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎型と型名とリテラル: +null, +リソース, +オブジェクト
タグ: 2017年版ソースエディター
199 行
|-
!style="writing-mode: vertical-rl"| 種類 !!style="writing-mode: vertical-rl"| 型 !! 型名 !! リテラル !! 説明
|-
!colspan=2 style="writing-mode: vertical-rl"| 論理型 null!! boolnull
| <syntaxhighlight lang=php><?php
null;
?>
</syntaxhighlight>
|
*nullは値がない状態を示し、$a = null; のとき、isset($a) は false となります。
* <code>null | 型</code> の短縮表記は <code>?型</code> です。
*リテラルでは、大文字と小文字を区別しません。
|-
!colspan=2 style="writing-mode: vertical-rl"| 論理型 !! bool
?>| </syntaxhighlight lang=php><?php
false, true;
?>
</syntaxhighlight>
|
*論理型は、falseとtrueしか取りえない enum のように振る舞います。
*リテラルでは、大文字と小文字を区別しません。
*歴史的な理由で、boolean と表現される場合があります。
|-
!rowspan=2 style="writing-mode: vertical-rl"| 数値 !!style="writing-mode: vertical-rl"| 整数 !! int
208 ⟶ 228行目:
0b01011100, // 2進数
1_234_567; // _ で区切られた10進数
?>
?></syntaxhighlight>
</syntaxhighlight>
|
*整数型は、10進数・8進数・16進数・2進数のいずれかです。
254 ⟶ 275行目:
*:つまり、PHP は 256 文字の文字集合しかサポートいません。
*::ネイティブの Unicode サポートはありません。
|-
!colspan=2 style="writing-mode: vertical-rl"| 論理型 !! bool
| <syntaxhighlight lang=php><?php
false, true;
?>
</syntaxhighlight>
|
*論理型は、falseとtrueしか取りえない enum のように振る舞います。
*歴史的な理由で、boolean と表現される場合があります。
|-
!colspan=2 style="writing-mode: vertical-rl"| 配列 !! array
271 ⟶ 283行目:
</syntaxhighlight>
|
* 配列型は、任意の型の値を順序付けて保持します。
* 配列型は、連想配列型のキーを整数に限定した特殊なケースで、型名も同じ array となります。
|-
!colspan=2 style="writing-mode: vertical-rl"| 連想配列 !! array
294 ⟶ 307行目:
*連想配列型は、整数または文字列のキーと任意の値のペアを順序なく保持します。
*:キーの重複は許されません。
|-
!colspan=2 style="writing-mode: vertical-rl"| リソース !! resource
| (なし)
|
* リソースは、データベースへの接続やファイルハンドルなど、外界のリソースと結びついたインスタンスの型で、delegate の一種と考えられます。
;[https://paiza.io/projects/na9LCz2AbBBDYiAx-QFBlA?language=php 例]:<syntaxhighlight lang=php>
<?php
header("Content-Type: text/plain");
 
$fh = fopen("/etc/hosts", "r");
echo get_debug_type($fh), PHP_EOL;
fclose($fh);
echo get_debug_type($fh), PHP_EOL;
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
resource (stream)
resource (closed)
</syntaxhighlight>
|-
!colspan=2 style="writing-mode: vertical-rl"| オブジェクト !! object
| (なし)
|
* オブジェクトは、クラスのインスタンスです。
* クラスを型と考えることもできます。
;[https://paiza.io/projects/hKoil4hOiMUIiVHosqY4Cw?language=php 例]:<syntaxhighlight lang=php>
<?php
header("Content-Type: text/plain");
 
echo get_debug_type(new stdClass), PHP_EOL;
echo get_debug_type(new class {}), PHP_EOL;
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
stdClass
class@anonymous
</syntaxhighlight>
|}