第2章 PHPの基本 / 第1回 模擬試験
PHPの型の相互変換に関する次の記述のうち、正しいものはどれか。
PHPでは明示的な型変換(キャスト)はサポートされていない。
文字列と数値の演算では、PHPは常にエラーを発生させる。
`int`型へのキャストは、小数点以下を切り捨てる。
正解
`bool`型へのキャストでは、空の文字列は`true`になる。
解説
`(int)`によるキャストは、小数点以下を切り捨てて整数部分のみを残します(四捨五入ではありません)。
他の選択肢が誤りである理由は次の通りです。
・PHPは`(int)`, `(float)`, `(string)`, `(bool)`, `(array)`などのキャスト構文による明示的な型変換をサポートしています。
・文字列と数値を演算した場合、PHPは可能な範囲で自動的に型変換を行います。数値として解釈できない文字列を演算した場合など一部のケースで警告や`TypeError`が発生することはありますが、「常にエラー」ではありません。
・`bool`型へのキャストでは、空の文字列`''`、`'0'`、`0`、`0.0`、空配列`[]`、`null`は`false`になります。それ以外の文字列は`true`になります。
例:
```
var_dump((int) 3.9); // int(3)
var_dump((int) -3.9); // int(-3)
var_dump((bool) ''); // bool(false)
```
(参照: 独習PHP 第4版 第2章 PHPの基本 2.5節 p.82〜85)
関連する問題
- PHPの配列に関する次の記述のうち、誤っているものはどれか。
- PHPの変数と定数に関する次の記述のうち、誤っているものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php $n = 2; $p = 3; ++$n; $p *= 2; $a = "$n, $p"; --$n; $p *= 3; $b = "$n, $p"; print $a . ' / ' . $b; ```
- PHPのデータ型に関する次の記述のうち、正しいものはどれか。
- 次の実行結果を得たい場合、コードの【A】と【B】に入る組み合わせとして正しいものはどれか。 ```php [ 実行結果 ] snowdrop, marigold [ コード ] $flowers = array(array('rose', 'hibiscus', 'tulip'), array('snowdrop','lily','gardenia'), array('lavender','gentian','pansy'), array('dandelion','sun flower','marigold')); print 【A】. ', ' .【B】; ```