$a = @()
How do I check if $a above is empty (which it is). I would like to get $true as answer.
That's not an associative array, it's a regular array, but the answer is the same. Use .Count and compare to 0.
An associative array is called a [hashtable] in PowerShell and its literal form uses @{} (curly braces).
@{}.Count -eq 0 # hashtable (associative array)
@().Count -eq 0 # array
@{}.Length is 1 while @{}.Count is 0..Count and .Length, and they are equal, but they never override an existing property with the same name. So as a counter to your example, in a string it would be flipped: "".Count is 1, "".Length is 0. (5).Count and (5).Length are both 1. The purpose of the synthetic properties is so that you don't need to use conditionals to determine whether a variable contains an array or a single value. It makes a lot of patterns easier.