phpで空文字確認で0が来た場合

phpで空文字だったら..の処理で

if ($var == '') {
    // なんたらかんたら
}

としたりしますがこれだと$varに0が来たら実行されます

$var = 0;
var_dump($var == '');
// -> true

まさかのtrueが返ってきます
暗黙の型変換が入るからです

型まで比較する === を使ったりしましょう

$var = 0;
var_dump($var === '');
// -> true

phpで変数がからっぽか判断
のように strlen を使うほうがおすすめです

phpで変数がからっぽか判断

phpで変数に何も入ってないか判断するのに

とありますが少々思ったのと違う結果になります

$var = ''; // 空文字だからfalseがほしい
var_dump(empty($var));
// -> true
var_dump(is_null($var));
// -> false

$var = 0; // 0が入ってるからtrueがほしい
var_dump(empty($var));
// -> true
var_dump(is_null($var));
// -> false

変数に何も入ってない ” とか nullはtrueになって欲しいですが
変数に空文字のときはis_nullはtrueになってほしい、
変数に0のときはemptyはfalseになってほしい、、

とそんなときは、文字の長さを見る

を使うといいと思います

$var = ''; // 空文字だからfalseがほしい
var_dump(strlen($var) === 0);
// -> false

$var = 0; // 0が入ってるからtrueがほしい
var_dump(strlen($var) === 0);
// -> true

イコールが3ついるので注意です

phpで一時ファイルを用意する

phpでサーバーでデータを処理して、いったんサーバーに保存、それからダウンロード処理を走らせるってときにつかえそうな
標準であるtempnamを使ってみました

$path = tempnam( ディレクトリ, 先頭につける文字 )

と呼び出すと、

  • ディレクトリ内に「先頭につける文字」から始まるかぶらないファイル名で、ファイルを作成
  • 返り値はファイルのパス

となります
昔はSessionIDつけたりしてやってた気がします

Ubuntu 14.04でxdebugを入れてみる

Ubuntu 14.04 で Apache + PHP 構築済みの環境でxdebugを入れるなら

$ sudo apt-get install php5-xdebug

で、インストール
Apache再起動

$ sudo service apache2 restart

これだけで有効になりました