for ($i = 1; $i <= 9; $i++) {
if ($i <= 5) {
for ($j = 4; $j >= $i; $j--) {
echo "*";
}
for ($n = 1; $n <= $i; $n++) {
echo $n;
}
for ($k = $n -2; $k >= 1; $k--) {
echo $k;
}
echo "<br>";
}
}
?>
上記を出力すると、以下のようになります
// ****1
// ***121
// **12321
// *1234321
// 123454321
ここからが質問です。
$i = 1 の時、
$j = 4だから'****'が出力される。
$n=1であり、$n<=$iのため、1が出力される。
$k は$n-2であり、$k>=1であるため、 この時出力されない。
よって、****1
$i =2 の時
$j=3だから'***'が出力される。
$n=1であり、$n<=$iのため1と2が出力される。
$k=$n-2だから1-2と2-2はいずれも$k >= 1;を満たしていないため、
この時出力されない。
よって、***12 になると思うのですが、実際みてみると
$i=2の時に***121なっているかと思います。
この末尾の1はどこから来たのでしょうか。
事実上、私の理解が間違っているのですが
どこの理解が間違っているのかわかりません。