帕斯卡的三角形有效但会抛出一个通知
Pascal's triangle works but throws an Notices
这是我的脚本。当我执行 $somma=$tri[$y]+$tri[$z];
?
时,程序无法在 $tri
数组中找到值
我一直收到通知,但为什么?
<?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;
}
?>
当 $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;
}
或者您可以在内部 for 循环之前将 0
元素推入 $tri
并从 count()
中减去 1。 https://3v4l.org/sWcrr
这是我的脚本。当我执行 $somma=$tri[$y]+$tri[$z];
?
$tri
数组中找到值
我一直收到通知,但为什么?
<?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;
}
?>
当 $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;
}
或者您可以在内部 for 循环之前将 0
元素推入 $tri
并从 count()
中减去 1。 https://3v4l.org/sWcrr