どもです。
仕事でちょっとヘマやらかしまして、ちょっと凹んでます。
まぁ失敗談は置いておいて、その過程で見つけてちょっと驚いたstr_replace()の話。
str_replace()にNULLを入れるとどうなるか、です。
var_dump(str_replace("a", "b", NULL));
// ⇒string(0) ""
var_dump(str_replace(NULL, "b", "aaabbb"));
// ⇒string(6) "aaabbb"
var_dump(str_replace("a", NULL, "aaabbb"));
// ⇒string(3) "bbb"
var_dump(str_replace(NULL, "b", NULL));
// ⇒string(0) ""
var_dump(str_replace("a", NULL, NULL));
// ⇒string(0) ""
var_dump(str_replace(NULL, NULL, NULL));
// ⇒string(0) ""
なんと、ひとつもエラーにならない。文字列型を返してくれる。
str_replace()を通したNULLは、すべて空の文字列に変換されてしまうようです。
ちなみにPHP4と5で事象確認済み。7の簡易テスト環境が欲しい今日この頃。