• ベストアンサー

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

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

  • re97
  • お礼率80% (601/744)
  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答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

  • header() 関数が必要になる場面は?

    http://php.net/manual/ja/function.header.php にheader() 関数の使い方が説明されていますが、 生の HTTP ヘッダを送信するというのは、オートで送信されているのを カスタマイズしてサーバーの動きを操作するということですよね。 この関数を利用するのは、どういった場合に必要になるのでしょうか。

    • ベストアンサー
    • PHP
  • pack関数

    今、少しずつPHPを勉強をしているのですが、 pack関数がわかりません。 http://www.php.net/manual/ja/function.pack.php にある例 1の結果がなぜ 0x12, 0x34, 0x78, 0x56, 0x41, 0x42 のように なるのですか? またこのバイナリ文字列を普通の文字にするには どうすればいいのですか? 参考になるサイト等がありましたらこれも一緒に 教えて下さい。

    • ベストアンサー
    • PHP
  • phpマニュアルの検索機能が機能しない件

    ど素人がphpを勉強中です。 関数の意味を調べたい時、 http://www.php.net/manual/ja/indexes.php 上記、関数マニュアル一覧から、Ctrl+Fの検索で、例えば『implode』で検索してみても、 http://php.net/manual/ja/function.implode.php このページが見つかりません。 わざわざGoogleから検索しないと出てきません。 とても不便です。 どうしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • strstr関数

    strstr関数で第三引数をつけると、引数の数がおかしいというメッセージが表示されます。 PHP Warning: Wrong parameter count for strstr() in 使っているのはPHP4.3系ですが、私の見間違いでしょうか? http://php.benscom.com/manual/ja/function.strstr.php また、strchrの別名となっていますが、どうして別名が存在するのでしょうか?

    • ベストアンサー
    • PHP
  • 日本語メールの送信する関数

    日本語のメール送信には、mail関数のラッパー関数であるmb_send_mailが使い勝手が良いようですが、mb_send_mail関数マニュアルにMaill関数を使った日本語メール送信サンプルが載っています。 http://jp.php.net/manual/ja/function.mb-send-mail.php#77899 これって、gmail、Yahooメールなど自分がテストした限りでは、特に文字化けなどせず問題ありません。なので、ライブラリなど使わずに、Mail関数でいいんじゃないかと思います。 このサンプルのmail関数を使った日本語メール送信で特に問題になることはあるのでしょうか? ちなみに、関係ないと思いますが、マニュアルにサンプルを乗せているこの人たちは何者(マニュアルプロジェクトメンバー?)なのでしょうか?

    • ベストアンサー
    • PHP
  • phpでmail()関数以外のやり方について

    PHPでmailを複数配信するのですが、 マニュアルサイト http://jp.php.net/manual/ja/ref.mail.php でmail()関数 を見ると 『mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。』 とあります。 そして PEAR::Mail http://pear.php.net/package/Mail や PEAR::Mail_Queue http://pear.php.net/package/Mail_Mime を続けて紹介しているのですが ここからは英語なのでサッパリわかりません。 どなたかご教授願えませんか

    • ベストアンサー
    • PHP
  • 関数の引数のデフォルト値について

    PHP5.2.4を使用しています。 自作関数で、例えば数値や文字列を受け取る引数のデフォルト値を 「''」で入力されてないかをチェックする場合と、 「NULL」で入力されてないかをチェックする場合とでは、 どちらが良いというのはあるのでしょうか? function a($arg = '') {  if($arg == '')  {  } } //または function a($arg = NULL) {  if(is_null($arg))  {  } }

    • ベストアンサー
    • PHP
  • COBOLの数字チェック

    COBOLのコーディングで ある項目が数字かどうかのチェックをする記述はどのようでしたか? NUMERICチェックです。 久しぶりにコーディングしなければならないのですが、すでにマニュアル類も見当たりません・・・。

  • 特定の変数の値をセッションを使わずに引き継ぐ方法

    PHPだと、output_add_rewrite_var()という関数 http://jp2.php.net/manual/ja/function.output-add-rewrite-var.phpで、 特定の変数をセッションを使わずに引き継ぐ方法があるのですが、 Perlで同じ事を実現できるでしょうか?

  • PHP で暗号化して何かを送信することってあるのでしょうか?

    こんにちは、趣味で PHP を触っています。 とても初歩的な質問になってしまうと思いますが、よろしくお願いします。 PHP では crypt 関数で暗号化することができるらしいのですが、実際にこれを使わなければいけない場合とはどのような時なのでしょうか? http://jp2.php.net/manual/ja/function.crypt.php PHP で処理したことを MySQL などのデータベースに書き込む場合、主にサーバー内での処理なので外部から見られることなんてないと思っていましたが、見ることは可能なのでしょうか? それともう一つ質問がありまして、マニュアルには「復号するための関数はありません。 crypt() が使用しているのは単方向アルゴリズムだからです。」とありますが、それだと暗号化すると二度とその情報が何かわからなくなるのではないでしょうか? 何か複合化する方法があるのですか? よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう