Треугольник Паскаля работает, но выдает уведомления

Вот мой сценарий. Программа не может найти значения в $tri массив, когда я делаю $somma=$tri[$y]+$tri[$z];?

Я продолжаю получать уведомления, но почему?

<?php
$tri=array(1,1);
for ($x=0;$x<=6;$x++) {
print_r($tri);
$count=count($tri);
$trinew=array();
for($y=0;$y<$count;$y++) {
$z=$y+1;
$somma=$tri[$y]+$tri[$z];    // <-- here is the problem
array_push($trinew,$somma);
}
array_unshift($trinew, 1);
$tri=$trinew;
}
?>

1

Решение

когда $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 индекс.

Вот почему вы получаете Извещения.


С оператором null coalescing и некоторыми другими незначительными штрихами это, кажется, проходит гладко:

Код: (демонстрация)

$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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]