SELECT ARRAY_LENGTH('{}'::INT[], 1)
This returns NULL, not so "dangerous" either way, not would be morelogically, if array length function will return 0 from empty array,instead of NULL ?
This is just IMHO.