短い質問。
次の例を考えます。
$arr = array();
$arr[0] = false ?: NULL;
var_dump($arr[0]);
var_dump($arr[1]);
var_dump(isset($arr[0]));
var_dump(isset($arr[1]));
var_dump(count($arr));
結果の出力は次のとおりです。
NULL
NULL
bool(false)
bool(false)
int(1)
結果の配列のサイズが 0 ではなく 1 になるのはなぜですか。また、三項演算子を使用するときにこれが起こらないようにする方法はありますか? それはバグですか、それとも意図した動作ですか?
ところで、私は php 5.3.3-7 を実行していますが、現時点では別のバージョンでテストできません。