2010年12月11日土曜日

Web製作でよく使うPHP変数の値有無判定関数





/**
*
* @param mixed $v
* @return boolean
*
**/
function v($v){
if(is_bool($v)){
return $v;
}elseif(is_numeric($v)){ // all numeric (0 and '0') are true.
return true;
}elseif(is_string($v)){
return !empty($v);
}elseif(is_array($v)){
$v = array_filter($v,"v");
return !empty($v);
}elseif(is_object($v)){
return v(get_object_vars($v));
}else{
return !empty($v);
}
}

実際にHTMLに出力するときは 0を値とみなすことのほうが多いと思いますので


0もTRUE扱いにしています。





PHPのStringのゼロに注意






$a = 0;
if(empty($a)){
echo 'TRUE';
}else{
echo 'FALSE';
}


これが、TRUEになることは容易にわかるのですが



$a='0';
if(empty($a)){
echo 'TRUE';
}else{
echo 'FALSE';
}



これも、TRUEになるとは盲点でした。恐るべしPHP





2010年12月1日水曜日

|| をつかって変数を初期化



値の不明な変数を初期化する場合



if($a){
$a = 'hogehoge';
}


もしくは



$a = $a ? $a : 'hogehoge';


これを以下のように書きます。



$a || $a = 'hogehoge';


|| は、if文の条件式にしか普段は使わないのだけれども


編集の初期化処理などに使うと1行で簡潔にかけて意外ときれい。


あまりこういう記述を増やすとPerlみたいに暗号のようなコードになりそうなので


ほどほどにしながら、ワンポイントで使うといいかも。