empty()について

!$varと判定結果は同じだが、宣言していないときのNoticeが出ない

if (!$var) {
  echo '空です';
}
// Notice: Undefined variable: var
// 空です

if (empty($var)){
  echo '空です';
}
// 空です

判定結果のテスト

$values = array('', ' ', '0', 0, 1, null, array());
foreach ($values as $value) {
  if (empty($value)) { // if (!$value) {
    var_dump($value);
    echo 'true'.'<br />';
  } else {
    var_dump($value);
    echo 'false'.'<br />';
  }
}

結果:
// string(0) "" true
// string(1) " " false
// string(1) "0" true
// int(0) true
// int(1) false
// NULL true
// array(0) { } true

※if (empty($value)) を if (!$value)に変更しても結果は同じでした