Когда $y
= $count - 1
, тогда $z
= $count
, и никогда не будет элемента, доступного через $tri[$z]
.
Например, на первой итерации $x
,$tri
- это:
array (
0 => 1,
1 => 1,
)
Когда $y = 0
и $z = 1
все хорошо, но когда вложенный for()
переходит к своей последней итерации ($y = 1
и $z = 2
), $tri
не имеет 2
индекса.
Вот почему вы получаете Уведомления .
С оператором нулевого слияния и некоторыми другими незначительными штрихамикажется, что все идет гладко:
Код: ( Demo )
$tri = [1, 1];
for ($x = 0; $x <= 6; ++$x) {
var_export($tri);
$trinew = [1];
for($y = 0, $count = count($tri); $y < $count; ++$y) {
$z = $y + 1;
$trinew[] = $tri[$y] + ($tri[$z] ?? 0);
}
$tri = $trinew;
}
Или вы можете вставить элемент 0
в $tri
до того, каквнутренний цикл и вычесть 1 из count()
.https://3v4l.org/sWcrr