• ベストアンサー

gettype関数 で型チェックをしたら何故ダメ?

>型のチェックには、この関数ではなく is_* 関数を使います ▽PHP: gettype - Manual   http://php.net/manual/ja/function.gettype.php て書いているのですが、gettypeはなんで利用してはいけないのでしょうか?(もしくは奨励されていないのでしょうか) is_numeric() とか、とっても難しそうなのですが…

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

不審な記述なので、英文を見ると、 Returns the type of the PHP variable var. For type checking, use is_* functions. と、「この関数ではなく」という部分がありません。つまり、翻訳者が言葉を補ったつもりで結果的に誤訳に近い物になってしまったと言うことでしょう。 つまり、利用してはいけないとか奨励されていないと言うことは無いでしょう。 変数の型が何かを知りたいときはgettype()を使えば良いし、特定の型かどうかのチェックをしたいときはis_*()を使えば良い(効率もよい)。 ただし、is_numeric()だけは、ゆるい型のチェックをするので、型チェックにはなりません。

re97
質問者

お礼

回答ありがとうございました。 英語公式サイトを見てみる、という発想はありませんでした。 大変参考になりましたー

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

「ダメ」ということではなく、用途が違うということでしょう。 変数の型は「自分でわかっている」ことが大前提ですし、間違いなく使いたい型かどうかはis_xxxxで事足りるのでgettypeを使うまでもないです(gettypeだと戻り値を比較したりと余計なことを書かないといけない)。 とはいえ、is_numeric以外はそうそう使う機会はありません。変数が書いた人間が意図しない型になっている時点で異常事態です。 POSTデータなどはすべてstring型になっていますのでgettypeしても意味がありませんし、intvalを通せば無条件にintegerになってしまいます(変換できない文字列だと 0 になる)。is_numericは「数字または数値形式の文字列」なので、gettypeがstring型でもintvalすれば数値に出来ることが保証されます。

re97
質問者

お礼

回答ありがとうございましたー

関連するQ&A