4

嗯,这是一个非常新手的问题,但找不到合适的关键字来获得答案。

我有一个向量变量 $p。

我想实现这一点:

$n = 5;

$prev = $p[$n--];
$actual = $p[$n];
$next = $p[$n++];

我想要的值应该是:

$prev = 4;
$actual = 5;
$next = 6;

取而代之的是,我得到:

$prev = 5;
$actual = 4;
$next = 4;

我知道我错过了一些东西,但我无法弄清楚。

提前致谢

4

3 回答 3

6

自己算一下:

$prev   = $p[$n - 1];
$actual = $p[$n];
$next   = $p[$n + 1];

如果您必须使用递增/递减运算符(出于某种奇怪的原因),您可以使用:

$prev   = $p[--$n];
$actual = $p[++$n];
$next   = $p[++$n];

请注意,正如 jeremy 指出的那样,您的原始代码失败了,因为递增和递减运算符会修改变量的原始值。

于 2013-01-31T15:47:36.310 回答
3

在第一次搜索时:

$prev = $p[$n--]

您正在为下一个操作更改 n 的值,将其减一。在

$next = $p[$n++];

您再次增加它,因此 n 值与开始时相同。你应该按照nickb所说的去做。

于 2013-01-31T15:50:43.880 回答
0

您正在内联递增相同的变量,因此:

$n当您这样做时不会保持为 5$n++$n--,您将值重新分配给$n

$n--= 4,所以现在 $n 是 4,而不是 5 所以$n++是 5,而不是 6

于 2013-01-31T15:51:51.423 回答