• 締切済み

PHPのNULL使い所

PHPのNULL使い所ってありますか? $var = null; isset($var) → false でセットされている場合もnullだとissetはfalseを返すし、なんだか非常に使い所が無いように感じるのですが、nullをこんな感じで使ってるor全く使わない等々、皆様の状況を教えてください。

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

引数のdefault値とか、default設定のない引数だけど渡すものがないとか、関数内で返り値用の変数にnullを入れておいて意味のあるデータが入ればそれが返るし、意味のあるデータが入らなければnullが返るようにしておくとか。 <?php function xx( $a=null ){ $result = null; /* いろいろ処理、$resultに値が入るかも、入らないかも? */ return $result; } function yy($a,$b,$c){ } yy(null,'',0); nullじゃなくてもといわれればそれまでだが、objectを受け取ったり返したりする予定の変数ならdefaultはnullとすることも多い。

  • t_ohta
  • ベストアンサー率38% (5078/13271)
回答No.1

データベースは「null」と「''」を別物として扱うので、データベースにデータを入れる際などは使い分けしますね。

muuming2001
質問者

お礼

ありがとうございます。 たーだそれはSQL上のNULLであってPHPのNULLのお話ではない感じが!

muuming2001
質問者

補足

ああ なるほど $str->bindValue(":hoge", $hoge, PDO::PARAM_STR); これはNULLいれたり文字列入れたりが処理わけずに同時にできますね!

関連するQ&A

  • PHPで使うis_null()関数

    PHP学習者です。 is_null() 関数の使い方で混乱しています。 添付の様な<form>を持つファイル nulltest.php と、それを受けて入力が nullかどうかを検証するファイルreceivee.php を作りました。 入力に何かを入れても、なにも入れなくてもis_null()は何も返しません、というか、False を返しているのだと思います。 逆に、!is_null() と否定形にすると、入力があっても無くても1,つまりtrue が返ります。 入力があれば true が返り、入力が無ければ false が返るようにするにはどうしたらよいのでしょうか?詳しい方どうか教えてください。 上記自作のファイルを以下にコピーします。 <?php echo "------------- nulltest.php ----------------</br>"; $no=null; echo "<form method='post' action='receive.php'>"; echo "<input type='text' name='testinput' value=".$no.">"; echo "<input type='submit' value='ok'>"; echo "</form>"; ?> <?php echo "------------- receive.php ------------------</br>"; $input=$_POST['testinput']; echo "======== ".$input." is ".is_null(input)."</br>"; ?>

    • ベストアンサー
    • PHP
  • var_dumpのdump意味はを知りたいです。

    <?php $var =1; var_dump(isset($var)); // true var_dump(isset($var1)); // false 以上dumpの意味が分かりません!? どんなときに使用するのでしょうか?  宜しくお願いします。

    • ベストアンサー
    • PHP
  • jquery,ajaxによるphp通信でnull

    初めまして。 現在jqueryを勉強中の学生です。 いろいろなサイトを参考にしつつ、試しににjquery・ajaxを使ったphpとの通信を試みているのですが、文字列のやりとりがうまくいきません。 数字ではうまくいくのですが、文字になるとalertの部分でnullと返されてしまいます。 アドバイス等頂ければと思います。 よろしくお願いいたします。 以下部分的ではありますがコードを示します。 (jqueryはjquery-1.11.1.min.jsを使用) [js] $.ajax({ type: "POST", url: "step1.php", data: send_data, success: function(receive_data) { var parseAr = JSON.parse(receive_data); alert(parseAr[0]['name']); }, error: function(XMLHttpRequest, textStatus, errorThrown) {alert('Error: ' + errorThrown); } }); return false; [php側] <?php if(isset($_POST['name'])) { $result = array(); $result[] = array('name'=>'織田', 'age'=>'33'); $result[] = array('name'=>'織田', 'age'=>'33'); echo json_encode($result); } else { echo json_encode('The parameter of "name" is not found.'); } exit; ?>

  • PHPの質問:フォームから受け取った値がNULL

    あまりに基本的過ぎるのか、検索しても、参考書を読んでも分かりませんでした。 ■やりたいこと index.htmlのフォームで入力した値を、output.phpで変数$nameとして受け取りたい。 (この後$nameをstrstr関数の引数として使いたい) ■作ったソース 【index.html】 <form action="output.php" method="post"> <input type="text" name="name"> <input type="submit" value="入力"> </form> 【output.php】 <?php $name = $_POST['name']; var_dump($name); ?> ■困っていること output.phpをブラウザで開くと、以下の通りに表示されます。 string(4) "abcf" しかし、ブラウザで「ソースを表示」すると、[NULL]となってしまいます この変数$nameは、strstr関数の引数として使いたいのですが、 そこで値がNULLのため、上手くいきません。 ■お聞きしたいこと (1)フォームから受け取った値をvar_dump()を使い、ブラウザのソース表示をすると NULLになるのは、そういった仕様なのなのでしょうか? (2)フォームからの値を変数に格納する際、何か注意する点があるのでしょうか? 何か根本的なことから理解していないようでお恥ずかしいのですが、 教えて頂けると大変助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのコーディングルール?

    お世話になります。 只今、PHP5で開発しているのですが 皆様のご意見を聞きたいと思いまして、質問させていただきます。 以下の場合、どちらでコーディングしますか? また具体的な理由などありましたら、ご教授頂けますでしょうか。 (1)if(!isset($hoge)){ (2)if(isset($hoge) == false){ 以下の場合、どちらでコーディングしますか? また具体的な理由などありましたら、ご教授頂けますでしょうか。 (3)require_once(/jp/ne/goo/Hoge.php) ・・・絶対パスでrequireする。 (4)require_once(goo/Hoge.php)  ・・・include_pathを通すなどして、相対パスで記述する。 基本的なことかもしれませんが、ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPの関数をC#で再現したい

    このジャンルでお願いします。 C# 2010 version 4.0を使用しています。 PHPという言語で isset( mixed $var [, mixed $... ] ) ・・・ 変数がセットされており、それが NULL でないことを調べる と array_key_exists ( mixed $key , array $search ) ・・・ 指定した key が配列に設定されている場合、 TRUE を返す という2つの関数がありますが、それぞれC#で同じような機能を再現しようとした場合に、 どのような記述やメソッドを使えば良いのでしょうか? 自分としては、C#のListを使って試しているのですが、 Listのメソッドにそれらしきものがなくて、 Countプロパティで指定したインデックス以下だったらと存在しない という無理なやり方しか思いきません・・・ if (list.Count <= indexKey) { /*存在しない*/ } 上の2つの機能をなんとかして再現することはできないでしょうか?

  • PHPでのNULLの正規表現

    PHPの正規表現で、使える文字が数字またはコンマの場合の書き方 '/^[0-9,]+$/' に使える文字として、NULL文字も追加したいのですが、 その書き方がよく分かりません。 正規表現としては、どのように書けばいいのでしょうか?

    • 締切済み
    • PHP
  • null 判定について

    javascriptに関して質問させて下さい。 accessのDBのデータをHTML上で表示・追加・削除・更新を行っています。 DB上のデータで空欄の項目を表示させたときに null が表示されます。 nullではなく空欄にしておきたいので、null判定チェックを 行っているのですが、ひっかかってくれない状態です。 ------------- var database; database = new ActiveXObject("ADODB.Connection"); database.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\\mydb.mdb;"); var mySql = "select 種別, 内容 from Aテーブル; var recordSet = database.Execute(mySql); var tempHtml = "種別=" + recordSet(0); if(recordSet(1) != null){ tempHtml = tempHtml + "<br>内容=" + recordSet(1); }else{ tempHtml = tempHtml + "<br>内容="; } (略) --------------- recordSet(0)=種別 recordSet(1)=内容 上記のように普通にnull判定をしてるつもりなのですが、 recordSet(1)=内容 が access上で空欄の場合=null もif文内に入り、 「null」という文字列が表記されます。 ※accessからとってきたデータではなく、  javascript内で null を設定した場合はチェックにひっかかっています。 var tmp = null; if(tmp == null){ alert("nullである"); } 何が悪いかお分かりになる方、ご回答お願いします。

  • NULLが返ってこない…。

    原因がわからないため質問をさせて頂きます。 <%-- JSP <input type="text" name="name"> //名前 String name = request.getParameter("name"); Data data = new Data(); //コンストラクタをnew data.setName(name); --%> <%-- class(Bean) private String n = null; public void setName(String name){ if(name != null){ n = name; }else{ n = null; } public String getName(){ if(name != null){ return name; }else{ return name; } } --%> 値をgetParameter()メソッドで取得をして 値をsetName(name);でセットをしています。 セットした側でもし値があるのであれば その値を変数に格納。 もし値がなければnullを変数に格納しています。 しかし System.out.println(data.getName().equals("");//true System.out.println(data.getName().equals(null);//false; となりnullを返してくれません…。 このコードに何を足したらnullを返してくれるのか わかりません。 わかる方がいらっしゃいましたらよろしくお願い致します。

    • ベストアンサー
    • Java
  • データベース(MySQL)にNULLとして格納

    下記サイトを参考にサイト上からデータベース(MySQL)のテーブルにレコードを追加できるようにしました。 http://ponk.jp/php/basic/php_mysql#page_index3 レコードの追加自体はできたのですが、テキストフィールドに何も記述されていない場合にNULLとして追加したいと思っているのですが、その方法が分かりません。 コードは次のようにしました。 $number = isset($_POST["number"]) ? $_POST["number"] : 'NULL'; $st = $pdo->prepare("INSERT INTO player(number) VALUES(?)"); $st->execute(array($number)); このコードで追加をすると、NULLではなく空白が格納されてしまいます。 どこを修正すればNULLとして格納できるようになるでしょうか? ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう