二重forについて


どなたかお力添えをお願いいたします。  
原因は内側のfor文だと思うのですが、二重for文のコードが上手く書けません。

[code]

    for ($i = 1; $i <= 4; $i++) {
        for ($j = 1; $j + 1 <= $i; $j++) {
            echo "*";
        }
    
        for ($k = $i + 1; $k <= 5; $k++) {
            echo $k - $i;
        }
        for ($l = 3; $l >= $i; $l--) {←これが間違っている
            echo $l;
        }
        echo "<br />";
    }
    
    ↑の結果
    1234321
    *12332
    **123
    ***1
    
[/code]

出したい結果↓  
1234321  
*12321  
**121  
***1




折り返しの開始が3固定になっています。また`$l`が1未満になったときループを終了すればよいと思います。

[code]

    for ($l = 3; $l >= $i; $l--) {←これが間違っている
        echo $l;
    }
    
[/code]

を

[code]

    for ($l = 4 - $i; $l >= 1; $l--) {
        echo $l;
    }
    
[/code]

とすればよいと思います。※動作確認はしていません。




折り返しの開始が3固定になっています。また`$l`が1未満になったときループを終了すればよいと思います。

[code]

    for ($l = 3; $l >= $i; $l--) {←これが間違っている
        echo $l;
    }
    
[/code]

を

[code]

    for ($l = 4 - $i; $l >= 1; $l--) {
        echo $l;
    }
    
[/code]

とすればよいと思います。※動作確認はしていません。

