プロが教える店舗&オフィスのセキュリティ対策術

PHP講座の第19回 スケジューラーを作ろう(9) - スケジューラー完成 - (その2)
http://www.phppro.jp/school/phpschool/vol19/2
サンプルコードに下記のような書き方をしています。
if (isset($_POST["title"]) && $_POST["title"]) {
isset($_POST["title"])では、$_POST["title"]そのものがあるのか、
また、$_POST["title"]=nullでないかをチェックしていると理解していますが、
その後の&& $_POST["title"]は、何のために指定しているのでしょうか。

A 回答 (2件)

参考サイトは長いので見てないです。



最初のissetはおっしゃるとおり。

二つ目はtrue/falseの判定とか?
POST値だからbool値ではないでしょうね・・・

たぶん入力データがあるかどうかをチェックしたいって感じだと思うので私なら

if (isset($_POST["title"]) && strlen($_POST["title"])>0) {

って書きます。

issetだと空文字もOKなので、それを弾くためでしょうね。
if ( $str ) {
って書き方は便利ですが、何のデータでも同じ変数に入ってしまうPHPでは、バグの温床にもなるので型が可変である可能性がある変数に対しては私は使わないです。
    • good
    • 0
この回答へのお礼

if (isset($_POST["title"]) && !$_POST["title"]="") {
でもOKということですか。でも、
if (isset($_POST["title"]) && strlen($_POST["title"])>0) {
こちらの方がシャキっとしてますね。
strlenをメモしておきます。有難うございました。

お礼日時:2012/02/24 01:03

>!$_POST["title"]=""



これは文法的にだめですね
$_POST["hoge"]の評価をするときは気をつけないといけません

一般に「空」であるというものがいろいろ定義されています。
条件によって微妙に挙動がちがいますので、
一度よく検証してみるとよいでしょう

$a=0;//$a="0",$a=null,$a=false,$a="",$a=array()でヒットするものがことなる;
if(!isset($a)) print "not set<br>";
if(is_null($a)) print "null<br>";
if(empty($a)) print "empty<br>";
if($a=="") print "==\"\"<br>";
if($a==="") print "===\"\"<br>";
if($a=="0") print "==\"0\"<br>";
if($a==="0") print "===\"0\"<br>";
if($a==0) print "==0<br>";
if($a===0) print "===0<br>";
if($a==false) print "==false<br>";
if($a===false) print "===false<br>";
if(is_array($a) and count($a)===0) print "空配列<br>";
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考になりました。

お礼日時:2012/05/14 11:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!