我为啥打印不出空心金字塔,我的代码有问题吗?

<?php
$n=4;

for($i=0;$i<$n;$i++){
    if($i==0){
            for($j=0;$j<=($n-1);$j++){
                echo "$nbsp";
            }
            echo "*";   
    }elseif($i==($n-1)){
            for($j=0;$j<=($n-1);$j++){
                    echo"*";
            }       
    }elseif {
            for($j=0;$j<=($n-1-$i);$j++){
                echo"$nbsp";
            }
            echo"*";
            for($j=0;$j<=($i*2-1);$j++){
                echo"$nbsp";
            }
            echo"*";
        }

    echo"<br>";
}

?>

 $n = 10; //金字塔的层数
$num = $n * 2 - 1; //每层金字塔的字符数量
echo "金字塔的层数为:".$n."\n";

for ($i = 0; $i < $n; $i++) {
  if ($i == 0) {// 打印第0层
    for($j = 0; $j < $n-1; $j++) {
      echo " ";
    }
    echo "*";
  } else if ($i == $n - 1) {// 打印第n-1层,最后一层
    for ($j = 0; $j < $num; $j++) {
      echo "*";
    }
  } else { //其他层
    //先打印左侧空格
    for ($j = 0; $j < $n-1-$i; $j++) {
      echo " ";
    }
    //打印左侧的*
    echo "*";
    //打印中间的空格
    for ($j = 0; $j < $i * 2 - 1; $j++) {
      echo " ";
    }
    //打印右侧的*
    echo "*";
  }
  echo "\n";//如果显示在网页里,则输出<br/>
}

对算法以及嵌套的for循环了解的不是很透彻..