読んだものメモ
背景とかはこちら
2018/02/19
スウェーデンの「ラゴム」という考え方による時間の使い方について
データ分析用Dockerコンテナ環境の作り方がまとまってるので今度試そう
phpのみんな大好き静的解析ツール
phan入れる途中でcomposerで管理してるライブラリの依存関係によるコンフリクトが起きてつらかった。。
php の min, max における null 扱いについて ふと気になって調べてみたところ、下記のようになっているようでした。
php > var_dump(min(1, null)); NULL php > var_dump(min(0, null)); int(0) php > var_dump(min(-1, null)); NULL
公式にも少しだけ言及がありました。
// 一方の値が NULL や boolean の場合、それを他の値と比較するときには、 // もう一方の値の型が何であるかにかかわらず、 // FALSE < TRUE / NULL == FALSE というルールを使います。 // 以下の例では、-10 と 10 はどちらも TRUE と評価されます。 $val = min(-10, FALSE, 10); // FALSE $val = min(-10, NULL, 10); // NULL
書いてある通りですが、 boolean が含まれる場合、boolean 以外の数値が強制的に boolean にキャストされ比較されるようです。 また、null の場合は false 扱いとなるようです。ちなみに同じ値の場合は引数の先のものが優先されるようです。
php > var_dump(min(null, 0)); NULL php > var_dump(min(0, null)); int(0) php > var_dump(min(0, null, false)); int(0) php > var_dump(min(null, false, 0)); NULL php > var_dump(min(false, 0, null)); bool(false)
そもそも、min, max に null とか入れるなよ、って感じですが、、