日記
オブジェクトを含む配列にin_arrayEdit

ついでにもう一つ。

$foo =& new stdclass();
$array = array(
$foo,
);
if (in_array($foo, $array)) {
echo 'found';
} else {
echo 'not found';
}

みたいなコードは、Wrong datatype for first argumentになるのも仕様なのか。まあちゃんとエラーメッセージが出るから仕様なんだろうけど、

Note: In PHP versions before 4.2.0 needle was not allowed to be an array.

とは書いてあるけど、objectはダメとは書いてないんだよな。

っつーかまあさっきの問題とこれとは同根で、オブジェクト同士の比較がうまくいかない(場合がある)から、in_arrayでオブジェクトが指定できないんだろうな。

せめてis_referenceとかができるなら、自前で実装できるんだけど、ある変数がリファレンスかどうかを判別する方法(別の変数と比較して同じシンボルテーブルを差しているかどうかがわかる、あるいは、そのシンボルテーブルを差す変数が複数存在するかどうかがわかる。)ってないよね。var_dumpのソースを見ればやり方は分かるんだろうけど。

Published At2006-02-10 00:00Updated At2006-02-10 00:00