連想配列(ハッシュ)で作ったツリー構造の中に、ある配列(要するに部分木)が含まれているかをチェックする処理を実装しようと思ったときに、ふと==による配列の比較と===による配列の比較はどう違うのだろうと疑問が浮かんだ。==と===の違いについては、以前『厳密な比較 [PHP]』で詳しく調べてみたものの、配列の比較はあまり詳しく見ていなかった。
そこで==と===で配列の比較をした場合の違いを詳しく見てみたところ、意外なことがわかった。
連想配列(ハッシュ)で作ったツリー構造の中に、ある配列(要するに部分木)が含まれているかをチェックする処理を実装しようと思ったときに、ふと==による配列の比較と===による配列の比較はどう違うのだろうと疑問が浮かんだ。==と===の違いについては、以前『厳密な比較 [PHP]』で詳しく調べてみたものの、配列の比較はあまり詳しく見ていなかった。
そこで==と===で配列の比較をした場合の違いを詳しく見てみたところ、意外なことがわかった。
「PHP 省略できる参照渡しの引数 - JE no hitori chat」によるとPHP4.4.2では、参照渡しの引数にデフォルト引数を設定して、引数を省略することはできなかったらしい。こんなこと試したことがなかったので、PHP4.4.4とPHP5.2.0で試してみた。
ある変数AとBの値を交換するとき、普通は一時変数を使って値を交換する。 例えば、C言語で整数変数のSwap関数を書くと以下のようになる。
void swap(int *a, int *b){
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
実はこのとき一時変数(tmp)を使わずに値を交換する方法もある。
GoogleがWeb開発者向けWiki「Google Doctype (HTML version)」を公開した。 現時点で、HTML、JavaScript、CSSのリファレンス的なものに加え、セキュリティやTipsなどが書かれている。
「「@」でエラー抑制すると PHP が遅くなるという噂について : a++ My RSS 管理人ブログ」で、@がある場合とない場合で速度比較をして以下のような結果が出た。
・・・遅い・・・遅すぎる・・・ここまでパフォーマンス悪くなるとは・・・
細かい処理とはいえ、最大10倍違うわけですから・・・
すいません、完全なる私の敗北です。これからはちゃんと isset() とか死ぬほど使います (_o_)
これに各所で反応があった。
私もいくつか書きたいことがあるので、書いておくことにする。