It should be noted that offsetExists behaves like "offsetIsSet" rather than "offsetIsValid":
<?php
$arr = new SplFixedArray(3);
var_dump($arr->offsetExists(1)); / false
$arr[1] = 42; / $arr->offsetSet(1, 42);
var_dump($arr->offsetExists(1)); / true
$arr[1] = null; / $arr->offsetSet(1, null);
var_dump($arr->offsetExists(1)); / true
unset($arr[1]); / $arr->offsetUnset(1);
var_dump($arr->offsetExists(1)); / false
var_dump($arr);
/*
object(SplFixedArray)[1]
null
*/
?>